无法访问c#中的bool变量

时间:2013-04-19 19:07:46

标签: c# visual-studio-2012 boolean

此代码的部分显示if (bar = true)它无法找到变量" bar"我在if (foo == "True")if (foo == "False")创建的内容。

代码:

string foo = Console.ReadLine();

if (foo == "True") {
    bool bar = true;
}
if (foo == "False") {
    bool bar = false;
}

if (bar = true) {
    Console.WriteLine("This is true");
}
else {
    Console.WriteLine("This is false");
}

8 个答案:

答案 0 :(得分:3)

您在每个bar块中声明了一个新的if,因此它不是该范围之外的有效标识符。您需要在if块之外声明它,例如

bool bar = false;
if (foo == "True")
{
    bar = true;
}
if (foo == "False")
{
    bar = false;
}

if (bar == true)
{
    Console.WriteLine("This is true");
}
else
{
    Console.WriteLine("This is false");
}

或者就此而言,这也可以起作用:

bool bar = (foo == "True");

if (bar == true)
{
    Console.WriteLine("This is true");
}
else
{
    Console.WriteLine("This is false");
}

甚至:

Console.WriteLine("This is {0}", foo == "True");

答案 1 :(得分:2)

更好的解析方法:

string foo = Console.ReadLine();
bool bar;
if (!bool.TryParse(foo, out bar))
    // inform the user, maybe have them try again

Console.WriteLine("This is {0}", bar);

答案 2 :(得分:1)

你搞乱了变量的范围。

bar仅存在于if声明的范围内。

在第一个if语句之外声明它。

此外,这不是比较:if (bar = true)

这是:`if(bar == true)

答案 3 :(得分:1)

你在2个不同的if语句中创建了bar。它们的范围仅限于那些ifs。当执行离开ifs时,两个条都不可见(因此它们之间不会相互冲突)。尝试更像这样的东西:

bool bar = false;
if (foo == "True")
{
    bar = true;
}
if (foo == "False")
{
    bar = false;
}

if (bar == true)
{
    Console.WriteLine("This is true");
}
else
{
    Console.WriteLine("This is false");
}

或者更好的代码:

bool bar = foo == "True";
Console.WriteLine("This is " + bar);

答案 4 :(得分:0)

bar变量应在if / else语句范围之外声明

bool bar;
if (foo == "True")
{
    bar = true;
}
else
{
    bar = false;
}

P.S。您也可以使用bool.Parse方法指定bool值。

答案 5 :(得分:0)

在ifs范围之外声明bar。当声明它们的块关闭时,它们会被遗忘。

答案 6 :(得分:0)

两件事:

首先,在每个bar - 块中定义if。它在相应的if - 块之外是不可见的。据说他们有一个本地 scope

其次,你最后使用bar == true代替bar = true=是赋值运算符,==是相等运算符。

以下内容可行:

string foo = Console.ReadLine();
bool bar;

if (foo == "True")
    bar = true;

if (foo == "False")
    bar = false;

if (bar == true)
    Console.WriteLine("This is true");
else
    Console.WriteLine("This is false");

答案 7 :(得分:0)

Bar是代码中的局部变量。你需要把它取出if语句块