переменная bool не получает значение true C # - PullRequest
1 голос
/ 09 октября 2011

У меня есть логическое значение, которое устанавливается на ложь при объявлении,

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);
}

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 09 октября 2011

Вы должны передать параметр row через ref: 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);

, вы получите желаемое (в вашемcase) поведение: flag будет просто псевдоним для myFlag переменной, и все, что вы ей назначите, станет значением myFlag.

Некоторые ссылки для чтения:

...