bool变量未设置为true C#

bool变量未设置为true C#,c#,methods,boolean,C#,Methods,Boolean,我有一个布尔值,在声明时设置为false public bool row1 = false; 但是,当我运行一些代码以将布尔值设置为true时,它似乎不是wokring if (currentBox.BackColor == cardColour) { MessageBox.Show("Please Draw a Card."); } else if (currentBox.BackColor != cardColour) { row = true; } 上面的代码是在pic

我有一个布尔值,在声明时设置为false

public bool row1 = false;
但是,当我运行一些代码以将布尔值设置为true时,它似乎不是wokring

if (currentBox.BackColor == cardColour)
{
    MessageBox.Show("Please Draw a Card.");
}
else if (currentBox.BackColor != cardColour)
{
    row = true;
}
上面的代码是在picturebox鼠标单击事件方法中调用的方法的方法体(调用该方法时使用参数中的行1)。在当前状态下,当它应该设置为true时,它会说它是false

下面是调用该方法的代码

private void rowOne_MouseClick(object sender, MouseEventArgs e)
{
    AllowTake(row1, currentCardPictureBox, Color.White, sender, e);
}
void MakeTrue(bool flag) {
    flag = true;
}

//Calling code:
bool myFlag = false;
MakeTrue(myFlag);

谢谢您的帮助。

您应该通过ref传递
参数:
行1
是一个单独的局部变量,其值不在方法之外使用

private void rowOne_MouseClick(object sender, MouseEventArgs e)
{
    AllowTake(row1, currentCardPictureBox, Color.White, sender, e);
}
void MakeTrue(bool flag) {
    flag = true;
}

//Calling code:
bool myFlag = false;
MakeTrue(myFlag);
调用
MakeTrue
后,
myFlag
的值不会改变。它的值用于初始化
MakeTrue
方法中的
标志
参数,就是这样。在此之后,对
flag
所做的任何操作都不会影响
myFlag
的值

现在,如果您这样做:

void MakeTrue(ref bool flag) {
    flag = true;
}

//Calling code:
bool myFlag = false;
MakeTrue(ref myFlag);
您将获得所需的(在您的情况下)行为:
flag
将只是
myFlag
变量的别名,您分配给它的任何内容都将成为
myFlag
的值

以下是一些链接: