我创建了一个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
数组有什么问题?
答案 0 :(得分:3)
And方法使BitArray发生变异(即改变对象)。从documentation获取BitArray.And的返回值:
[返回] [t]包含按位结果的当前实例 对当前BitArray中的元素进行AND操作 指定BitArray中的相应元素。
请注意,是当前实例。
bit1
数组与bit3
数组的实例相同。并且因为它们是相同的实例listBox3
和listBox4
将具有相同的值。
编辑:格式化和澄清
答案 1 :(得分:3)
你操纵了BitArray bit1
BitArray bit3 = bit1.And(bit2);
&#34;对当前BitArray中的元素执行与指定BitArray中相应元素的按位AND运算。&#34; MSDN