Здесь битами в коллекции становится уже целый их набор из массива bytes, причем элемент bytes [ 0 ] обозначает первые 8 битов, элемент bytes [ 1 ] — вторые 8 битов и т.д. Аналогично, коллекцию типа Bit Array можно составить из массива целочисленных значений, используя приведенный ниже конструктор.
public BitArray(int[ ] values)
В данном случае элемент values [0 ] обозначает первые 32 бита, элемент values [ 1 ] — вторые 32 бита и т.д.
С помощью следующего конструктора можно составить коллекцию типа BitArray, указав ее конкретный размер:
public BitArray(int length)
где length обозначает количество битов в коллекции, которые инициализируются логическим значением false. В приведенном ниже конструкторе можно указать не только размер коллекции, но и первоначальное значение составляющих ее битов.
public BitArray(int length, bool defaultValue)
В данном случае все биты в коллекции инициализируются значением defaultValue, передаваемым конструктору в качестве параметра.
И наконец, новую коллекцию типа BitArray можно создать из уже существующей, используя следующий конструктор.
public BitArray(BitArray bits)
Вновь сконструированный объект будет содержать такое же количество битов, как и в указываемой коллекции bits, а в остальном это будут две совершенно разные коллекции.
Коллекции типа BitArray подлежат индексированию. По каждому индексу указывается отдельный бит в коллекции, причем нулевой индекс обозначает младший бит.
В классе BitArray определяется ряд собственных методов, помимо тех, что уже объявлены в интерфейсах, которые в нем реализуются. Методы этого класса приведены в табл. 25.9. Обратите внимание на то, что в классе BitArray не поддерживается метод Synchronized (). Это означает, что для коллекций данного класса синхронизированная оболочка недоступна, а свойство IsSynchronized всегда имеет логическое значение false. Тем не менее для управления доступом к коллекции типа BitArray ее можно синхронизировать для объекта, предоставляемого упоминавшимся ранее свойством SyncRoot.
Таблица 25.9. Методы, определенные в классе BitArray
Метод
Описание
Public
value)
BitArray And(BitArray
Выполняет операцию логического умножения И битов вызывающего объекта и коллекции value. Возвращает коллекцию типа BitArray, содержащую результат
Public
bool Get(int index)
Возвращает значение бита, указываемого по индексу index
Public
BitArray Not()
Выполняет операцию поразрядного логического отрицания НЕ битов вызывающей коллекции и возвращает коллекцию типа BitArray, содержащую результат
Метод
Описание
public BitArray Or(BitArray value)
public void Set (int index, bool value)
public void SetAll(bool value)
public BitArray Xor(BitArray value)
Выполняет операцию логического сложения ИЛИ битов вызывающего объекта и коллекции value. Возвращает коллекцию типа BitArray, содержащую результат
Устанавливает бит, указываемый по индексу index, равным значению value
Устанавливает все биты равными значению value
Выполняет логическую операцию исключающее ИЛИ над битами вызывающего объекта и коллекции value. Возвращает коллекцию типа BitArray, со-
В классе BitArray определяется также собственное свойство, помимо тех, что указаны в интерфейсах, которые в нем реализуются.
public int Length { get; set; }
Свойство Length позволяет установить или получить количество битов в коллекции. Следовательно, оно возвращает такое же значение, как и стандартное свойство Count, определяемое для всех коллекций. В отличие от свойства Count, свойство Length доступно не только для чтения, но и для записи, а значит, с его помощью можно изменить размер коллекции типа BitArray. Так, при сокращении коллекции типа BitArray лишние биты усекаются, начиная со старшего разряда. А при расширении коллекции типа BitArray дополнительные биты, имеющие логическое значение false, вводятся в коллекцию, начиная с того же старшего разряда.