2011-03-15 35 views
63

Quiero vaciar una lista. ¿Como hacer eso?¿Cómo vaciar una lista en C#?

+2

leído que MSDN bien? – Massif

+27

El tiempo de respuesta aquí es más rápido de lo que hubiera sido leer/buscar MSDN – V4Vendetta

+23

Además, la respuesta ahora es más fácil de encontrar aquí que en MSDN. –

Respuesta

155

Es muy fácil:

myList.Clear(); 
+2

... si la lista es en realidad una 'Lista <>', 'ArrayList', o implementa' IList'. ;) – Lucero

+1

@Lucero se llama como una lista si no es ninguno de esos? –

+9

Dado que este es un éxito en google y me encuentro con este problema, estoy haciendo un comentario al respecto. Si utiliza la misma lista en un bucle y usa clear, la lista a menudo mantendrá la referencia a los objetos antiguos: a menudo termino usando = new LisT (); debido al hecho de que borra todas las asignaciones antiguas al instante. Para la mayoría de la gente, sin embargo, .Clear(); será suficiente, pero si encuentra una lista que actúa de manera extraña, intente usar = new List () ;. – Charles

5

se puede hacer eso

var list = new List<string>(); 
list.Clear(); 
24

Si por "lista" quiere decir un List<T>, entonces el método Clear es lo que quiere:

List<string> list = ...; 
... 
list.Clear(); 

Debe adquirir el hábito de buscar en la documentación de MSDN sobre estas cosas.

Así es como buscar rápidamente documentación sobre varios bits de ese tipo:

  • List Class - proporciona la clase List<T> en sí (aquí es donde debería haber comenzado)
  • List.Clear Method - proporciona la documentación en el método Clear
  • List.Count Property - proporciona la documentación sobre la propiedad Count

Todas estas consultas de Google enumeran un conjunto de enlaces, pero normalmente desea la primera que google le proporcione en cada caso.

+0

"Todos estos enumeran un conjunto de enlaces, pero normalmente desea el primero". ¿A menos que quieras vaciar la lista? –

+0

Lo siento, debería haber sido más claro. Por lo general, desea el primer enlace que Google le ofrece, no la "Clase de la lista". –

5

Puede utilizar el método claro

List<string> test = new List<string>(); 
test.Clear(); 
4

Es necesario la función Clear() en la lista, como tal.

List<object> myList = new List<object>(); 

myList.Add(new object()); // Add something to the list 

myList.Clear() // Our list is now empty 
6

Para dar una respuesta alternativa (¿Quién necesita 5 respuestas iguales?):

list.Add(5); 
// list contains at least one element now 
list = new List<int>(); 
// list in "list" is empty now 

Tenga en cuenta que todas las demás referencias a la lista de edad no se han borrado (dependiendo de la situación, este podría ser lo que quieras). Además, en términos de rendimiento, generalmente es un poco más lento.

+0

¿Puedes verificar que setting list = new List <>() sea más lento que list.Clear() ;? De acuerdo con MSDN (link below) list.Clear(); es una operación de O (N), y no puedo imaginar que crear una nueva lista tarde más. https://msdn.microsoft.com/en-us/library/dwb5h52a(v=vs.110).aspx –

+4

DotNetPerls hizo un punto de referencia y encontró que la nueva Lista <> es más rápida. http://www.dotnetperls.com/list-clear –

5

Opción n. ° 1: utilice la función para vaciar el List<T> y conservar su capacidad.

  • conde se establece en 0, y las referencias a otros objetos de elementos de la colección también se liberan.

  • capacidad se mantiene sin cambios.

Opción # 2 - Uso y TrimExcess() funciones para configurar List<T> a su estado inicial.

  • conde se establece en 0, y las referencias a otros objetos de elementos de la colección también se liberan.

  • Recortar una vacía List<T> establece la capacidad de la lista a la capacidad defecto.

Definiciones

Count = número de elementos que son en realidad en el List<T>

Capacity = número total de elementos de la estructura de datos interna puede contener sin cambiar el tamaño.

Clear() Sólo

List<string> dinosaurs = new List<string>();  
dinosaurs.Add("Compsognathus"); 
dinosaurs.Add("Amargasaurus"); 
dinosaurs.Add("Deinonychus"); 
Console.WriteLine("Count: {0}", dinosaurs.Count); 
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity); 
dinosaurs.Clear(); 
Console.WriteLine("\nClear()"); 
Console.WriteLine("\nCount: {0}", dinosaurs.Count); 
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity); 

Clear() y TrimExcess()

List<string> dinosaurs = new List<string>(); 
dinosaurs.Add("Triceratops"); 
dinosaurs.Add("Stegosaurus"); 
Console.WriteLine("Count: {0}", dinosaurs.Count); 
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity); 
dinosaurs.Clear(); 
dinosaurs.TrimExcess(); 
Console.WriteLine("\nClear() and TrimExcess()"); 
Console.WriteLine("\nCount: {0}", dinosaurs.Count); 
Console.WriteLine("Capacity: {0}", dinosaurs.Capacity);