Ha un metodo Clear()
che rimuove tutti gli elementi che è possibile utilizzare.
Se dovessi azzardare un'ipotesi sul perché hanno usato Clear
invece di RemoveAll
, penso che sarebbe stato perché RemoveAll
porta il suggerimento che si sta rimuovendo gli elementi della collezione, mentre Clear
ti dice le voci sono semplicemente essere cancellati .
Questo fa la differenza nel tipo di notifica CollectionChanged
che viene generato. Clear()
genera un evento NotifyCollectionChangedAction.Clear
e non include gli elementi rimossi nell'evento, mentre Remove
genera un evento NotifyCollectionChangedAction.Removed
e passa l'elemento rimosso all'evento.
You cannot raise a CollectionChanged
event with multiple items, pertanto l'aumento di un evento NotifyCollectionChangedAction.Removed
con tutti gli elementi rimossi genererebbe un'eccezione. L'alternativa sarebbe sollevare un evento CollectionChanged
per ogni oggetto rimosso, il che può essere piuttosto negativo per le prestazioni. E semplicemente sollevare un evento NotifyCollectionChangedAction.Reset
causerebbe un po 'di confusione quando gli utenti si aspettano che si verifichi un evento Removed
quando rimuovono gli articoli.
Quindi immagino che abbiano deciso di utilizzare semplicemente .Clear()
anziché .RemoveAll()
perché il nome è una descrizione migliore di ciò che sta effettivamente accadendo dietro le quinte.
Hai guardato il metodo Clear()? (http://msdn.microsoft.com/en-us/library/ms132405.aspx) – Eirik
Ha il metodo Clear(), che rimuove tutti gli elementi dalla Raccolta. – Dante
Bene, il metodo RemoveAll() non è destinato a cancellare la raccolta. Anche l'elenco ha un metodo Clear(). È destinato a rimuovere tutti gli elementi che corrispondono a un determinato criterio. –