【发布时间】:2018-10-14 17:34:53
【问题描述】:
我正在尝试为我的团队制作一个概念验证命令行软件,但是我的代码有问题。编译器将代码视为我正在尝试将字符串隐式转换为 bool 值,但我在这里根本没有使用任何布尔值,而且我绝不试图将任何东西转换为布尔值。以下 sn-p 可用于重现该问题:
namespace default {
class test {
static void Main() {
Console.Clear();
string IsDemoMode;
Console.WriteLine("Activate Demo Mode? (Y/N)");
IsDemoMode = Console.ReadLine();
if (string IsDemoMode = "Y")
{
// Demo code...
} else
{
// Non-Demo Code...
};
}
}
}
这里的问题是:为什么 Visual Studio 认为我正在尝试将字符串转换为布尔值,而我什至还没有做到这一点?编译器是否期望一个布尔值而不是字符串?
【问题讨论】:
-
if (string IsDemoMode = "Y")应该是if (string IsDemoMode == "Y")...您当前的代码是 assignment。 -
@Filburt 感谢您的帮助,现在看来问题已解决。只是为了澄清一下,如果只有 1 或 2 = 符号,为什么这很重要?我的理解是 '==' 和 '=' 是一回事。
-
@MeowcatMcMeowXVIII 赋值和等于之间有区别。你仍然可以在你的 if 中同时使用“if ((somestring = otherstring) == 第三个字符串)”
-
@MeowcatMcMeowXVIII,在这种情况下最好使用“等于”。请检查我更新答案中的示例
-
@MeowcatMcMeowXVIII 并确认您可以获得 +2 声望的答案之一 ;)