Колекция, която представлява набор от обекти, до които може да се достъпи чрез преминаване през всеки елемент (по-специално, може да се достъпи чрез foreach цикъл) Колекцията съдържа множество елементи, т.е. има обект клас колекция и N елементни обекта
Тъй като всеки колекция клас реализира интерфейса IEnumerable, всеки обект на колекция има метод GetEnumerator(), който може да върне обект, реализиращ интерфейса IEnumerator, който не е нито колекция, нито обект на клас елемент на колекция, той е независим класов обект. Този обект ви позволява да преминавате през всеки елементен обект в колекция клас обект
Ако класът за колекция е клас за колекция, дефиниран от потребителя, потребителят трябва да реализира своя метод GetEnumerator(), в противен случай цикли не могат да се използват. Разбира се, класът IEnumerator, съответстващ на този персонализиран колекция клас (класът, който реализира интерфейса), също трябва да бъде персонализиран
Например, IEnumerator, съответстващ на класа на колекцията ArrayList, е ArrayListEnumeratorSimple IEnumerator, съответстващ на класа на колекцията от масиви, е SZArrayEnumerator (Нито един от тези класове не е покрит в документацията на .NET Framework Class Library (MSDN))
1. Интерфейсите в System.Colloctions, които представят поведението на колекцията, са: 1) ICollection Дефинирайте размера, броя на enum-овете и методите за синхронизация за всички колекции. Произлизано от IEnumerable Той дефинира най-основното поведение на колекция класа, а всички колекция класове реализират този интерфейс (базов интерфейс) Но поведението му е твърде базово: това е основно свойство на Count, и няма много смисъл да се прилага самостоятелно
2)IEnumerable Изложете изброяване, което поддържа прости итерации върху множество Той има само един метод, GetEnumerator(), който връща интерфейс на IEnumerator, чрез който може да преминава през колекцията По същество всички колекционни класове реализират този интерфейс
3) IList Имплементацията на IList представлява колекция от стойности, които могат да бъдат сортируеми и достъпни чрез индекс за своите членове, а самата тя реализира интерфейсите ICollection и IEnumerable е абстрактният базов клас за всички списъци. Има три категории IList имплементации: само за четене, с фиксиран размер и с променлив размер.
4) Идентификатор IDictionary имплементацията е колекция от двойки ключ/стойност, която сама по себе си реализира интерфейсите ICollection и IEnumerable е базовият интерфейс на колекция от двойки ключ/стойност. Съществуват три категории IDictionary имплементации: само за четене, с фиксиран размер и с променлив размер. IDictionary може да се нарече речник, карта или shash списък и достъпва стойности, базирани на ключове (от всякакъв тип).
2. Класовете колекция, които могат да се използват директно в System.Collections, са: 1)ArrayList Имплементирам интерфейси: IList, ICollection, IEnumerable Докато колекцията не бъде модизирана, ArrayList може безопасно да поддържа няколко читателя едновременно С добавянето на елементи към ArrayList, капацитетът автоматично се увеличава при поискване чрез преразпределение (2 пъти увеличение) Ако трябва да създадеш масив от обекти, но не знаеш размера му предварително, можеш да използваш ArrayList ArrayList нарича всички елементи обекти, затова трябва да се въвежда при достъп до елементи в ArrayList Плюсове: Динамична промяна на размера, гъвкаво и удобно вмъкване и премахване на елементи, сортируемост Недостатъци: Производителността на вмъкване не е толкова добра, колкото масивите, не са толкова силни типове
2) BitArray Имплементирайте интерфейси: ICollection и IEnumerable Управление на компресирани масиви от битови стойности.
3) Hashtable Имплементиране на интерфейси: IDictionary, ICollection, IEnumerable Можете свободно да добавяте и премахвате елементи в Hashtable, някои като ArrayList, но без натоварването за производителност
4) SortedList Имплементиране на интерфейси: IDictionary, ICollection, IEnumerable SortedLIst комбинира предимствата на ArrayList и Hashtable и може да се сортира по ключова стойност
5) Опашка Имплементирайте интерфейси: ICollection и IEnumerable Queques са опашки – първи влезли, първи излезли достъп до отделни елементи Можете да извикнете метода GetEnumerator() на обекта Queque, за да накарате обекта IEnumerator да преминава през елементите в опашката
6) Стек Имплементирайте интерфейси: ICollection и IEnumerable Стекът е стек, който достъпва отделни елементи по принципа "последен влез, първи излез" Можеш да извикаш метода GetEnumerator() на обекта Stack, за да накараш обекта IEnumerator да преминава през елементите в стека
3. Класовете колекция, споменати по-горе, са всички общи колекция класове и повечето от елементите, които приемат, са от типа Обект, когато обектът се поставя в След колекцията оригиналната информация за типове се губи – тоест тези класове от общи колекции не са силно типизирани Решението е използването на силно типизирани колекционни класове Пространство от имена System.Collections System.Collections.Specialized пространство от имена Някои класове могат да отговарят на изискванията и да се използват директно или наследени
|