2011-10-09 72 views
1

我有一个设置为false被宣布时,布尔,布尔变量没有得到设置为true C#

public bool row1 = false; 

然而,当我为了布尔设置为true运行一些代码,这不是”吨似乎工作呢,

if (currentBox.BackColor == cardColour) 
{ 
    MessageBox.Show("Please Draw a Card."); 
} 
else if (currentBox.BackColor != cardColour) 
{ 
    row = true; 
} 

上面的代码是一个被在PictureBox鼠标点击事件的方法被调用(在调用方法时使用ROW1中的参数)方法的方法主体。在目前的状态下,它应该将它设置为true时表示它是错误的。

这是调用该方法的代码。

private void rowOne_MouseClick(object sender, MouseEventArgs e) 
{ 
    AllowTake(row1, currentCardPictureBox, Color.White, sender, e); 
} 

感谢您的帮助。

回答

2

您应该通过参考row参考:row1是一个单独的局部变量,其值不在方法外使用。

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

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

MakeTrue后称为myFlag值不会改变。它的值用于初始化MakeTrue方法中的flag参数,就是这样。之后,无论你做什么flag都不会影响myFlag的值。现在

,如果你这样做:

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

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

你会得到想要的(你的情况)的行为:flag将只是一个别名myFlag变量,不管你分配给它会成为值为myFlag

一些链接阅读:

+0

感谢队友,工作:) – Ari

+0

@happyguy:没问题 – Dyppl