System.ComponentModel.BindingList: Добавить (объект) против AddNew()

В чем разница между System.ComponentModel.BindingList методами Add(object) и AddNew()? В документации MSDN сказано следующее:

  • Add: добавляет объект в конец Collection<T>.

  • AddNew: добавляет новый элемент в коллекцию.

Кажется, что оба метода добавляют элемент в коллекцию, но Add(object) делает это за один раз, тогда как AddNew() немного сложнее. Мои тесты с Add(object), кажется, работают, но я хочу знать, использую ли я правильный метод.

Так в чем же разница между этими методами?


person user1214135    schedule 17.04.2012    source источник
comment
AddNew добавляет «пустой» объект. Был запущен только конструктор по умолчанию. Он вызывает событие AddingNew, чтобы разрешить другим классам настраивать инициализацию объекта. Обратите внимание, что EndNew необходимо вызывать после установки его свойств. Не ясно, какой из них «лучше» в вашем случае. Просто лучше.   -  person Hans Passant    schedule 17.04.2012
comment
@HansPassant, ты спасатель! У меня было странное поведение, потому что я не звонил .EndNew, и я был так сбит с толку. Метаданные на .AddNew действительно должны упоминать это требование!   -  person Carl G    schedule 19.05.2012


Ответы (1)


AddNew() создает объект для вас (поэтому у него нет параметра).
Он предназначен для использования сетками, которые не знают, как создать новый объект для передачи в Add().

person SLaks    schedule 17.04.2012