8

Qual è la differenza tra i metodi System.ComponentModel.BindingListAdd(object) e AddNew()? La documentazione MSDN dice:System.ComponentModel.BindingList: Aggiungi (oggetto) a AddNew()

  • Add: Aggiunge un oggetto alla fine del Collection<T>.

  • AddNew: aggiunge un nuovo elemento alla raccolta.

Sembra che entrambi i metodi aggiungere un elemento della collezione, ma Add(object) lo fa in un solo colpo, mentre AddNew() è leggermente più complicato. I miei test con Add(object) sembrano funzionare, ma voglio sapere se sto usando il metodo corretto.

Quindi qual è la differenza tra questi metodi?

+4

AddNew aggiunge un oggetto "vuoto". È stato eseguito solo il costruttore predefinito. Solleva l'evento AddingNew per consentire ad altre classi di personalizzare l'inizializzazione dell'oggetto. Notare che EndNew deve essere chiamato dopo aver impostato le sue proprietà. Non è chiaro quale sia "migliore" nel tuo caso. Semplice è meglio. –

+1

@HansPassant sei un risparmiatore di vita! Stavo vivendo un comportamento strano perché non stavo chiamando '.EndNew' ed ero così confuso. I metadati su ".AddNew" dovrebbero davvero menzionare questo requisito! –

risposta

7

AddNew() crea l'oggetto per te (è per questo che non ha un parametro).
È progettato per essere utilizzato dalle griglie, che non sanno come creare un nuovo oggetto da passare a Add().