LastName = "Simpson", Age = 47 } },
{ "Marge", new Person { FirstName = "Marge",
LastName = "Simpson", Age = 45 } },
{ "Lisa", new Person { FirstName = "Lisa",
LastName = "Simpson", Age = 9 } }
};
// Получить элемент с ключом Lisa.
Person lisa = peopleB["Lisa"];
Console.WriteLine(lisa);
}
Наполнять Dictionary
personB в предыдущем примере, для объекта коллекции определяется область инициализации; однако можно также применять индексатор, чтобы указать ключ, и присвоить ему новый объект:// Наполнить с помощью синтаксиса инициализации словарей.
Dictionary
{
["Homer"] = new Person { FirstName = "Homer",
LastName = "Simpson", Age = 47 },
["Marge"] = new Person { FirstName = "Marge",
LastName = "Simpson", Age = 45 },
["Lisa"] = new Person { FirstName = "Lisa",
LastName = "Simpson", Age = 9 }
};
Пространство имен System.Collections.ObjectModel
Теперь, когда вы понимаете, как работать с основными обобщенными классами, можно кратко рассмотреть дополнительное пространство имен, связанное с коллекциями — System.Collections.ObjectModel
Класс ObservableCollection
ReadOnlyObservableCollection похожа, но по своей природе допускает только чтение).Работа с классом ObservableCollection
Создайте новый проект консольного приложения по имени FunWithObservableCollections
System.Collections.ObjectModel. Во многих отношениях работа с ObservableCollection идентична работе с List, учитывая, что оба класса реализуют те же самые основные интерфейсы. Уникальным класс ObservableCollection> делает тот факт, что он поддерживает событие по имени CollectionChanged . Указанное событие будет инициироваться каждый раз, когда вставляется новый элемент, удаляется (или перемещается) существующий элемент либо модифицируется вся коллекция целиком.Подобно любому другому событию событие CollectionChanged
NotifyCollectionChangedEventHandler. Этот делегат может вызывать любой метод, который принимает object в первом параметре и NotifyCollectionChangedEventArgs — во втором. Рассмотрим следующий код, в котором наполняется наблюдаемая коллекция, содержащая объекты Person, и осуществляется привязка к событию CollectionChanged:using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using FunWithObservableCollections;
// Сделать коллекцию наблюдаемой
// и добавить в нее несколько объектов Person.
ObservableCollection
{
new Person{ FirstName = "Peter", LastName = "Murphy", Age = 52 },
new Person{ FirstName = "Kevin", LastName = "Key", Age = 48 },
};
// Привязаться к событию CollectionChanged.