Добавить в цитаты Настройки чтения

Страница 455 из 502

<b>class QueueDemo {</b>

<b>  static void ShowEnq(Queue q, int a) {</b>

<b>    q.Enqueue(a) ;</b>

<b>    Console.WriteLine(&quot;Поместить в очередь: Enqueue(&quot; + a + &quot;)&quot;);</b>

<b>    Console.Write(&quot;Содержимое очереди: &quot;);</b>

<b>    foreach(int i in q)</b>

<b>      Console.Write(i + &quot; &quot;);</b>

<b>    Console.WriteLine() ;</b>

<b>  }</b>

<b>  static void ShowDeq(Queue q) {</b>

<b>    Console.Write(&quot;Извлечь из очереди: Dequeue -&gt; &quot;);</b>

<b>    int a = (int) q.Dequeue();</b>

<b>    Console.WriteLine(a);</b>

<b>    Console.Write(&quot;Содержимое очереди: &quot;);</b>

<b>    foreach(int i in q)</b>

<b>      Console.Write(i + &quot; &quot;) ;</b>

<b>    Console.WriteLine();</b>

<b>  }</b>

<b>  static void Main() {</b>

<b>    Queue q = new Queue();</b>

<b>    foreach(int i in q)</b>

<b>      Console.Write(i + &quot; &quot;);</b>

<b>    ShowEnq(q, 22);</b>

<b>    ShowEnq(q, 65);</b>

<b>    ShowEnq(q, 91);</b>

<b>    ShowDeq(q);</b>

<b>    ShowDeq(q);</b>

<b>    ShowDeq(q);</b>

<b>    try {</b>

<b>      ShowDeq (q);</b>

<b>    } catch (InvalidOperationException) {</b>

<b>      Console.WriteLine(&quot;Очередь пуста.&quot;);</b>

<b>    }</b>

<b>  }</b>

<b>}</b>

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

<b>Поместить в очередь: Enqueue(22)</b>

<b>Содержимое очереди: 22</b>

<b>Поместить в очередь: Enqueue(65)</b>

<b>Содержимое очереди: 22 65</b>

<b>Поместить в очередь: Enqueue(91)</b>

<b>Содержимое очереди: 22 65 91</b>

<b>Извлечь из очереди: Dequeue -&gt; 22</b>

<b>Содержимое очереди: 65 91</b>

<b>Извлечь из очереди: Dequeue -&gt; 65</b>

<b>Содержимое очереди: 91</b>

<b>Извлечь из очереди: Dequeue -&gt; 91</b>

<b>Содержимое очереди:</b>

<b>Извлечь из очереди: Dequeue -&gt; Очередь пуста.</b>

Хранение отдельных битов в классе коллекции BitArray

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

В классе BitArray определено несколько конструкторов. Так, с помощью приведенного ниже конструктора можно сконструировать объект типа BitArray из массива логических значений.

<b>public BitArray(bool[] values</b>)

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

Коллекцию типа BitArray можно также составить из массива байтов, используя следующий конструктор.

<b>public BitArray( byte[] bytes)</b>

Здесь битами в коллекции становится уже целый их набор из массива bytes, причем элемент bytes [0] обозначает первые 8 битов, элемент bytes[1] — вторые 8 битов и т.д. Аналогично, коллекцию типа BitArray можно составить из массива целочисленных значений, используя приведенный ниже конструктор.

<b>public BitArray(int[ ] values)</b>

В данном случае элемент values[0] обозначает первые 32 бита, элемент values[1] — вторые 32 бита и т.д.

С помощью следующего конструктора можно составить коллекцию типа BitArray, указав ее конкретный размер:

<b>public BitArray(int length)</b>

где length обозначает количество битов в коллекции, которые инициализируются логическим значением false. В приведенном ниже конструкторе можно указать не только размер коллекции, но и первоначальное значение составляющих ее битов.