BitArray AND操作

时间:2014-05-24 16:50:43

标签: c#

我创建了一个BitArray程序。

private void Form1_Load(object sender, EventArgs e)
{
    BitArray bit1 = new BitArray(4);
    bit1[0] = true;
    bit1[1] = false;
    bit1[2] = true;
    bit1[3] = false;
    for (int a = 0; a < bit1.Count; a++)
    {
        listBox1.Items.Add(bit1[a]);
    }

    bool[] arr = new bool[] { false, true, true, false };
    BitArray bit2 = new BitArray(arr);
    for (int a = 0; a < bit2.Count; a++)
    {
        listBox2.Items.Add(bit2[a]);
    }

    BitArray bit3 = bit1.And(bit2);
    for (int a = 0; a < bit3.Count; a++)
    {
        listBox3.Items.Add(bit3[a]);
    }
    for (int a = 0; a < bit1.Count; a++)
    {
        listBox4.Items.Add(bit1[a]);
    }
    for (int a = 0; a < bit2.Count; a++)
    {
        listBox5.Items.Add(bit2[a]);
    }
}

listBox4给出以下输出:

false, false, true, false

现在在listBox4我认为正确的输出如下,因为我没有改变bit1数组中的任何内容:

true, false, true, false

那么bit1数组有什么问题?

2 个答案:

答案 0 :(得分:3)

And方法使BitArray发生变异(即改变对象)。从documentation获取BitArray.And的返回值:

  

[返回] [t]包含按位结果的当前实例   对当前BitArray中的元素进行AND操作   指定BitArray中的相应元素。

请注意,是当前实例

bit1数组与bit3数组的实例相同。并且因为它们是相同的实例listBox3listBox4将具有相同的值。

编辑:格式化和澄清

答案 1 :(得分:3)

你操纵了BitArray bit1

BitArray bit3 = bit1.And(bit2);

&#34;对当前BitArray中的元素执行与指定BitArray中相应元素的按位AND运算。&#34; MSDN