#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)