BitArray не работает должным образом

У меня есть этот BitArray:

    BitArray bits = new BitArray(2);
    bits[0] = false;
    bits[1] = true;

Который представляет: 10b -> 2

Посмотрим, в чем его ценность:

  int[] array = new int[1];
  bits.CopyTo(array, 0);
  Console.WriteLine(array[0]);  // value=2

Отлично.

Теперь я меняю первый код на:

   bool[] bits = new bool[2] {  false, true }; //same value !
   BitArray myBA4 = new BitArray( bits );

   //and again...
   int[] array = new int[1];
   bits.CopyTo(array, 0);
   Console.WriteLine(array[0]);
  • Исключение: массив назначения был недостаточно длинным. Проверьте destIndex и длину, а также нижние границы массива.

Вопрос

Где моя ошибка? Я думаю, что это должен быть тот же результат.

1 ответ

Решение
bool[] bits = new bool[2] { false, true };

выделяет массив из двух элементов, и CopyTo должен копировать их по одному. Это не может быть успешным, потому что

  • второй массив слишком короткий;
  • bool не может быть преобразован в int неявно.
Другие вопросы по тегам