Имеет ли List измененное событие в c #?

#c#

#c#

Вопрос:

Недавно я купил книгу под названием «Язык программирования c #» 4-е издание. На странице 49 есть ссылка на список с измененным событием, к которому можно привязать в качестве примера событий. Попытался воспроизвести это, но в итоге немного поцарапал голову этим :-

 List<string> names = new List<string>();
names.Changed = new EventHandler(ListChanged);
  

и так продолжается….
Я что-то упускаю или у List нет измененного события?

Комментарии:

1. Обратите внимание, что ObservableCollection<T> запускает события, если элементы добавляются или удаляются из списка, но не при изменении одной из строк.

Ответ №1:

Нет, List<T> такого события нет, вы ничего не упускаете. Вы можете проверить, в ObservableCollection<T> котором есть CollectionChanged событие, на которое вы могли бы подписаться. Он широко используется в WPF и Silverlight для реализации шаблона MVVM.

Комментарии:

1. Да, я знаю о observablecollection, имеющем это событие. Просто мне стало интересно, был ли я, когда в книге парня, который написал язык, у него есть этот пример кода.

2. и так это был я, как справедливо заметил Гейб. Он ссылался на класс, определенный ранее на другой странице. :S

Ответ №2:

Нет, взгляните на ObservableCollection .

Ответ №3:

Действительно, это так. Однако List<T> Changed событие with, на которое ссылается страница 49, фактически представлено на странице 40. Это не List<T> то, что является частью библиотеки базового класса. Чтобы использовать версию, включенную в книгу, вам придется ввести ее самостоятельно (или, возможно, книга поставляется с компакт-диском, или, возможно, вы можете скачать ее), и ваш код не будет совместим с любым другим кодом, который использует тот System.Collections.Generic.List<T> , который используют все остальные.

Комментарии:

1. аххххххх теперь я понял. Пенни бросил Гейба. Спасибо за это. Знал, что это будет зависеть от меня и моего отсутствия чего-то 🙂 Очень признателен!

Ответ №4:

Такого события нет List<T> . Может быть, книга ссылается на System.Collections.ObjectModel.ObservableCollection<T> ?

Ответ №5:

Вы можете использовать ObservableCollection и добавить пространство имен для их использования

 Namespace: System.Collections.ObjectModel
Assembly: WindowsBase (in WindowsBase.dll)