2009-10-20 17 views
5

¿Es necesario este tipo de prueba si se elimina un artículo?C# List <T> Contiene la prueba

if (_items.Contains(item)) 
{ 
    _items.Remove(item); 
} 

Y, ¿qué tal esta prueba?

if (!_items.Contains(item)) 
{ 
    _items.Add(item); 
} 
+2

¿Por qué no solo lee la documentación y/o lo intenta? Parece una cosa simple de descubrir. –

+4

No veo qué le pasa al hacer la pregunta sobre Stackoverflow, aunque tiene razón en que leer la documentación siempre es un buen reflejo. Las respuestas aquí también pueden proporcionar información adicional que puede ser interesante para él (como la mención a Hashset en la segunda respuesta). –

Respuesta

11

No es necesario probar para eliminar. Remove() devolverá falso si no eliminó nada.

Si no desea elementos duplicados en la lista, puede realizar una prueba antes de agregarlos. De lo contrario, tendrás duplicados.

Consulte también: http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

+2

Si no quiere duplicados, no debe probar; debe usar una colección que no le permita tener duplicados. De lo contrario, no tienes seguridad de hilos. – Tordek

+0

Asumiendo que la seguridad del hilo es un problema. Si es así, también debes asegurarte de que tu clase de colección es segura para subprocesos (supongo que MS's puede ser, idk). – snarf

7

También podría utilizar un HashSet <T> si usted quiere ser capaz de añadir() un elemento varias veces y que sólo existe en la colección una vez, y sin comprobación Contiene() primero.