Public static void ShowBits(string rem,



BitArray bits) {

Console.WriteLine(rem);

for(int i=0; i < bits.Count; i++)

Console.Write("{0, -6} ", bits[i]);

 

Console.WriteLine ("\n");

}

 

static void Main() {

BitArray ba = new BitArray(8);

byte[] b = { 67 };

BitArray ba2 = new BitArray(b);

 

ShowBits("Исходное содержимое коллекции bа:", ba);

 

ba = ba.Not();

 

ShowBits("Содержимое коллекции bа после логической операции NOT:", ba);

 

ShowBits("Содержимое коллекции bа2:", ba2);

 

BitArray baЗ = ba.Xor(ba2);

 

ShowBits("Результат логической операции ba XOR bа2:", baЗ);

}

}

 

Эта программа дает следующий результат.

 

Исходное содержимое коллекции bа:

False False False False False False False False

 

Содержимое коллекции bа после логической операции NOT:

True True True True True True True True

 

Содержимое коллекции bа2:

True True False False False False True False

 

Результат логической операции ba XOR bа2:

False False True True True True False True

 

 

Специальные коллекции

 

В среде .NET Framework предусмотрен ряд специальных коллекций, оптимизированных для работы с данными конкретного типа или для их обработки особым образом. Классы этих необобщенных коллекций определены в пространстве имен System.Collections.Specialized и перечислены ниже.

 

Класс специальной коллекции - Описание

 

CollectionsUtil - Содержит фабричные методы для создания коллекций

HybridDictionary -  Предназначен для коллекций, в которых для хранения небольшого количества пар “ключ-значение” используется класс ListDictionary. При превышении коллекцией определенного размера автоматически используется класс Hashtable для хранения ее элементов

ListDictionary -  Предназначен для коллекций, в которых для хранения пар “ключ-значение" используется связный список. Такие коллекции рекомендуются только для хранения небольшого количества элементов

NameValueCollection -  Предназначен для отсортированных коллекций, в которых хранятся пары “ключ-значение”, причем и ключ, и значение относятся к типу string

OrderedDictionary -  Предназначен для коллекций, в которых хранятся индексируемые пары “ключ-значение”

StringCollection -  Предназначен для коллекций, оптимизированных для хранения символьных строк

StringDictionary -  Предназначен для хеш-таблиц, в которых хранятся пары “ключ-значение”, причем и ключ, и значение относятся к типу string

 

Кроме того, в пространстве имен System.Collections определены три базовых абстрактных класса: CollectionBase, ReadOnlyCollectionBase и DictionaryBase. Эти классы могут наследоваться и служить в качестве отправной точки для разработки собственных специальных коллекций.

 

 

Обобщенные коллекции

 

Благодаря внедрению обобщений прикладной интерфейс Collections API значительно расширился, в результате чего количество классов коллекций и интерфейсов удвоилось. Обобщенные коллекции объявляются в пространстве имен System.Collections.Generic. Как правило, классы обобщенных коллекций являются не более чем обобщенными эквивалентами рассматривавшихся ранее классов необобщенных коллекций, хотя это соответствие не является взаимно однозначным. Например, в классе обобщенной коллекции LinkedList реализуется двунаправленный список, тогда как в необобщенном эквиваленте его не существует. В некоторых случаях одни и те же функции существуют параллельно в классах обобщенных и необобщенных коллекций, хотя и под разными именами. Так, обобщенный вариант класса ArrayList называется List, а обобщенный вариант класса HashTable — Dictionary. Кроме того, конкретное содержимое различных интерфейсов и классов реорганизуется с минимальными изменениями для переноса некоторых функций из одного интерфейса в другой. Но в целом, имея ясное представление о необобщенных коллекциях, можно без особого труда научиться применять и обобщенные коллекции.

Как правило, обобщенные коллекции действуют по тому же принципу, что и-необобщенные, за исключением того, что обобщенные коллекции типизированы. Это означает, что в обобщенной коллекции можно хранить только те элементы, которые совместимы по типу с ее аргументом. Так, если требуется коллекция для хранения несвязанных друг с другом разнотипных данных, то для этой цели следует использовать классы необобщенных коллекций. А во всех остальных случаях, когда в коллекции должны храниться объекты только одного типа, выбор рекомендуется останавливать на классах обобщенных коллекций.

Обобщенные коллекции определяются в ряде интерфейсов и классов, реализующих эти интерфейсы. Все они описываются далее по порядку.

 

 


Дата добавления: 2019-02-12; просмотров: 249; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!