此代码的部分显示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");
}
答案 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语句块