Back to slide -- Keyboard shortcut: 'u'  previous -- Keyboard shortcut: 'p'  next -- Keyboard shortcut: 'n'  Annotated program -- Keyboard shortcut: 't'    ecma-language-specification/bit-array/bitarray.cs - The class BitArray.Lecture 5 - slide 13 : 29
Program 4

// From the ECMA-334 C# Language specifications (section 17.8).
// Also in Hejlsberg et al., The C# Programming Language, 2ed.

using System;
public class BitArray   
{                       
   int[] bits;   
   int length;

   public BitArray(int length) {
      if (length < 0) throw new ArgumentException();
      bits = new int[((length - 1) >> 5) + 1];  
      this.length = length;                     
   }

   public int Length {
      get { return length; }
   }

   public bool this[int index] {                     
      get {                                          
         if (index < 0 || index >= length) {         
            throw new IndexOutOfRangeException();
         }
         return (bits[index >> 5] & 1 << index) != 0;  
      }
      set {                                          
         if (index < 0 || index >= length) {         
            throw new IndexOutOfRangeException();
         }
         if (value) {                                
            bits[index >> 5] |= 1 << index;          
         }
         else {                                      
            bits[index >> 5] &= ~(1 << index);
         }
      }
   }   
}