Tiene un método Clear()
que elimina todos los elementos que puede usar.
Si tuviera que aventurar una conjetura en cuanto a por qué se utilizan Clear
en lugar de RemoveAll
, creo que sería porque RemoveAll
lleva a la sugerencia de que tiene que quitar artículos de la colección, mientras que Clear
le indica los elementos simplemente se están limpiando .
Esto hace una diferencia en el tipo de notificación CollectionChanged
que se genera. Clear()
provoca un evento NotifyCollectionChangedAction.Clear
y no incluye los elementos eliminados en el evento, mientras que Remove
genera un evento NotifyCollectionChangedAction.Removed
y pasa el elemento eliminado al evento.
You cannot raise a CollectionChanged
event with multiple items, por lo que plantear un evento NotifyCollectionChangedAction.Removed
con todos los elementos eliminados arrojaría una excepción. La alternativa sería plantear un evento CollectionChanged
por cada artículo que se eliminó, lo que puede ser bastante malo para el rendimiento. Y simplemente generar un evento NotifyCollectionChangedAction.Reset
causaría cierta confusión cuando los usuarios esperan que ocurra un evento Removed
cuando están eliminando elementos.
Supongo que decidieron simplemente usar .Clear()
en lugar de .RemoveAll()
porque el nombre es una mejor descripción de lo que está sucediendo realmente detrás de las escenas.
¿Has mirado el método Clear()? (http://msdn.microsoft.com/en-us/library/ms132405.aspx) – Eirik
Tiene el método Clear(), que elimina todos los elementos de la colección. – Dante
Bueno, el método RemoveAll() no está destinado a borrar la colección. Incluso la lista tiene un método Clear(). Está destinado a Eliminar todos los artículos que coinciden con un determinado criterio. –