我有一个布尔值,在声明时设置为false,
public bool row1 = false;
然而,当我运行一些代码以便将布尔值设置为true时,它似乎并不是真的,
if (currentBox.BackColor == cardColour)
{
MessageBox.Show("Please Draw a Card.");
}
else if (currentBox.BackColor != cardColour)
{
row = true;
}
上面的代码是在一个图片框鼠标点击事件方法中调用的方法的方法体(在调用方法时使用参数中的row1)。在目前的状态下,当它被设置为真时,它说它是错误的。
以下是调用方法的代码。
private void rowOne_MouseClick(object sender, MouseEventArgs e)
{
AllowTake(row1, currentCardPictureBox, Color.White, sender, e);
}
感谢您的帮助。
答案 0 :(得分:2)
您应该通过ref传递row
参数:row1
是一个单独的局部变量,其值不在方法之外使用。
void MakeTrue(bool flag) {
flag = true;
}
//Calling code:
bool myFlag = false;
MakeTrue(myFlag);
调用MakeTrue
后,myFlag
的值不会更改。它的值用于在flag
方法中初始化MakeTrue
参数,就是这样。在此之后,无论您对flag
做什么都不会影响myFlag
的价值。
现在,如果你这样做:
void MakeTrue(ref bool flag) {
flag = true;
}
//Calling code:
bool myFlag = false;
MakeTrue(ref myFlag);
您将获得所需的(在您的情况下)行为:flag
将只是myFlag
变量的别名,而您分配给它的任何内容都将成为myFlag
。
要阅读的一些链接: