【问题标题】:BitArray doesn't work as expectedBitArray 无法按预期工作
【发布时间】:2014-12-09 17:17:36
【问题描述】:

我有这个 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 和长度,以及数组的下限。

问题

我的错误在哪里?我认为它应该是相同的结果。

【问题讨论】:

  • 您确定您的意思是bits.CopyTo(...) 而不是myBA4.CopyTo(...)
  • @Michael 天哪,我的错。对不起,你是对的。现在按预期工作。 (为时已晚)...复制粘贴得很糟糕....

标签: c# .net bitarray


【解决方案1】:
bool[] bits = new bool[2] { false, true };

分配一个包含两个元素的数组,CopyTo 应该一个一个地复制它们。它不能成功,因为

  • 第二个数组太短了;
  • bool 不能隐式转换为 int

【讨论】:

  • 对变量感到困惑。 tnx
  • @RoyiNamir 是的,CopyTo 复制了一个元素范围。顺便说一句,int[2] 将是另一个例外,因为 bool 无法转换为 int
  • 是检查:(源数组类型不能分配给目标数组类型。)。
猜你喜欢
  • 2013-12-23
  • 2016-01-13
  • 2020-09-21
  • 2011-08-17
  • 2012-04-29
  • 2021-08-12
  • 2019-02-04
  • 2014-12-02
  • 2013-12-02
相关资源
最近更新 更多