Ari
Ari

Reputation: 1036

bool variable not getting set to true C#

I have a boolean which is set to false when being declared,

public bool row1 = false;

However, when I run some code in order to set the boolean to true, it doesn't seem to be wokring,

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

The above code is the method body of a method which is being called in a picturebox mouse click event method (using row1 in the parameters when calling the method). At its current state, it's saying it's false when it should be set to true.

Here is the code which is calling the method.

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

Thanks for any help.

Upvotes: 1

Views: 11338

Answers (1)

Dyppl
Dyppl

Reputation: 12381

You should pass the row parameter by ref: row1 is a separate local variable and its value is not used outside the method.

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

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

After MakeTrue is called the value of myFlag doesn't change. Its value is used to initialize a flag argument in MakeTrue method and that's it. After that whatever you do to flag won't affect the value of myFlag.

Now, if you do this:

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

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

you will get the desired (in your case) behavior: flag will be just an alias for myFlag variable and whatever you assign to it will become the value of myFlag.

Some links to read:

Upvotes: 2

Related Questions