1

这段代码中说if (bar = true)找不到我在if (foo == "True")or中创建的变量“bar”的部分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");
}
4

8 回答 8

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");
于 2013-04-19T19:09:50.860 回答
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);
于 2013-04-19T19:11:25.507 回答
1

你搞乱了变量的范围。

barif只存在于您的陈述范围内。

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

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

这是:`if (bar == true)

于 2013-04-19T19:09:59.843 回答
1

您在 2 个不同的 if 语句中创建 bar 。它们的范围仅限于那些 if。当执行离开 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);
于 2013-04-19T19:11:23.770 回答
0

bar变量应声明超出if/else语句的范围

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

ps您也可以使用bool.Parse方法分配布尔值。

于 2013-04-19T19:10:21.407 回答
0

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

于 2013-04-19T19:10:30.480 回答
0

两件事情:

首先,您bar在每个if-block 内部定义。它在相应的块之外是不可见的if。据说它们具有局部作用域

其次,您必须使用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");
于 2013-04-19T19:11:28.007 回答
0

Bar 是代码中的局部变量。您需要将其取出 if 语句块

于 2013-04-19T19:18:45.783 回答