2014-10-14 5 views
1

У меня есть этот 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 и длину и нижние границы массива.

Вопрос

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

+2

Вы уверены, что имеете в виду 'bits.CopyTo (...)', а не 'myBA4.CopyTo (...)'? – Michael

+0

@Michael omg, Мой плохой. жаль, что ты прав. теперь работает как ожидалось. (слишком поздно) ... копия плохо вставлена ​​.... –

ответ

2
bool[] bits = new bool[2] { false, true }; 

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

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

путается с переменной. tnx –

+0

@RoyiNamir Yep, 'CopyTo' копирует _ диапазон элементов_. BTW, с 'int [2]' это было бы еще одним исключением, так как 'bool' не может быть преобразован в' int'. – AlexD

+0

Да проверено: (Тип массива _Source не может быть назначен типу целевого массива ._). –

Смежные вопросы