El tiempo de respuesta aquí es más rápido de lo que hubiera sido para leer / buscar MSDN
V4Vendetta
27
Además, la respuesta ahora es más fácil de encontrar aquí que en MSDN.
Matt Connolly
14
Sin mencionar el hecho de que si busca en Google .net empty list, esta página aparece antes que MSDN.
Vivian River
2
@ V4Vendetta En 2018, sugeriría que Stackoverflow probablemente debería crear un Bot que puso sus comentarios sobre cualquier tema que tiene un enlace a MSDN doc en los comentarios ...
... si la lista es en realidad una List<>, ArrayListo implementos IList. ;)
Lucero
3
@Lucero ¿se llama como lista si no es ninguno de esos?
Srinivas Reddy Thatiparthy
16
Dado que este es un éxito en Google y me encuentro con este problema, estoy necro comentando esto. Si usa la misma lista en un bucle y usa clear, la lista a menudo mantendrá referencias a objetos antiguos - a menudo termino usando = new LisT <T> (); debido al hecho de que borra todas las asignaciones antiguas al instante. Sin embargo, para la mayoría de las personas, .Clear (); será suficiente, pero si encuentra una lista que actúa de manera extraña, intente usar = new List <T> () ;.
Charles
1
Voy a hacer doble comentario sobre esto porque se ha proporcionado información errónea aquí a partir de 2020. List<T>.Clearborra correctamente todas las referencias, lo que permite que el GC borre las asignaciones cuando sea necesario. new List<T>NO hace esto y es inadecuado en todos los escenarios de manera efectiva
Juan
28
Si por "lista" te refieres a a List<T>, entonces el método Clear es lo que quieres:
List<string>list=...;...list.Clear();
Debería adquirir el hábito de buscar en la documentación de MSDN sobre estas cosas.
A continuación, se explica cómo buscar rápidamente documentación sobre varios bits de ese tipo:
List Class : proporciona la List<T>clase en sí ( aquí es donde debería haber comenzado )
"Todos estos enumeran un conjunto de enlaces, pero normalmente desea el primero". ¿A menos que quieras vaciar la lista?
a CVn
Lo siento, debería haber sido más claro. Por lo general, desea el primer enlace que le brinda Google, no la "Clase de lista".
Lasse V. Karlsen
9
Para dar una respuesta alternativa (¿Quién necesita 5 respuestas iguales?):
list.Add(5);// list contains at least one element nowlist=newList<int>();// list in "list" is empty now
Tenga en cuenta que no se han borrado todas las demás referencias a la lista anterior (dependiendo de la situación, esto podría ser lo que desee). Además, en términos de rendimiento, suele ser un poco más lento.
¿Puede verificar que la configuración list = new List <> () es en realidad más lenta que list.Clear () ;? Según lista de MSDN (enlace a continuación). Borrar (); es una operación O (N), y no puedo imaginar que crear una nueva lista lleve más tiempo que eso. msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx
Chris Tramel
5
DotNetPerls hizo una evaluación comparativa y descubrió que la nueva Lista <> es más rápida. dotnetperls.com/list-clear
Gerhard Powell
Por extensión, también tenga en cuenta que listtiene una nueva referencia. Así que no uses eso si estás usando un candado en esa lista.
jeromej
9
Opción # 1: use la función Clear () para vaciar List<T>y retener su capacidad.
El recuento se establece en 0 y también se liberan las referencias a otros objetos de los elementos de la colección.
La capacidad permanece sin cambios.
Opción n. ° 2: use las funciones Clear () y TrimExcess () para establecer List<T>el estado inicial.
El recuento se establece en 0 y también se liberan las referencias a otros objetos de los elementos de la colección.
Recortar un vacío List<T>establece la capacidad de la lista en la capacidad predeterminada.
Definiciones
Count = número de elementos que están realmente en elList<T>
Capacidad = número total de elementos que la estructura de datos interna puede contener sin cambiar el tamaño.
.net empty list
, esta página aparece antes que MSDN.Respuestas:
Es muy facil:
fuente
List<>
,ArrayList
o implementosIList
. ;)List<T>.Clear
borra correctamente todas las referencias, lo que permite que el GC borre las asignaciones cuando sea necesario.new List<T>
NO hace esto y es inadecuado en todos los escenarios de manera efectivaSi por "lista" te refieres a a
List<T>
, entonces el método Clear es lo que quieres:Debería adquirir el hábito de buscar en la documentación de MSDN sobre estas cosas.
A continuación, se explica cómo buscar rápidamente documentación sobre varios bits de ese tipo:
List<T>
clase en sí ( aquí es donde debería haber comenzado )Todas estas consultas de Google enumeran un paquete de enlaces, pero normalmente desea el primero que Google le ofrece en cada caso.
fuente
Para dar una respuesta alternativa (¿Quién necesita 5 respuestas iguales?):
Tenga en cuenta que no se han borrado todas las demás referencias a la lista anterior (dependiendo de la situación, esto podría ser lo que desee). Además, en términos de rendimiento, suele ser un poco más lento.
fuente
list
tiene una nueva referencia. Así que no uses eso si estás usando un candado en esa lista.Opción # 1: use la función Clear () para vaciar
List<T>
y retener su capacidad.Opción n. ° 2: use las funciones Clear () y TrimExcess () para establecer
List<T>
el estado inicial.Definiciones
Count = número de elementos que están realmente en el
List<T>
Capacidad = número total de elementos que la estructura de datos interna puede contener sin cambiar el tamaño.
Borrar () solamente
Borrar () y TrimExcess ()
fuente
usted puede hacer eso
fuente
Puedes usar el método claro
fuente
Necesita la función Clear () en la lista, así.
fuente