我已经创建了一个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数组有什么问题呢?
发布于 2014-05-24 16:56:58
和方法变异(即改变对象) BitArray。从文档返回BitArray.And的返回值:
返回当前实例,该实例包含当前BitArray中元素的按位操作和针对指定BitArray中相应元素的操作结果。
注意,表示当前实例。
bit1数组将是与bit3数组相同的实例。由于它们是相同的实例,所以listBox3和listBox4将具有相同的值。
编辑:格式化和澄清
发布于 2014-05-24 17:00:45
你疯了BitArray bit1
BitArray bit3 = bit1.And(bit2);“对当前BitArray中的元素对指定的BitArray中的相应元素执行按位和操作”MSDN。
https://stackoverflow.com/questions/23847476
复制相似问题