C# 为什么VisualStudio说我';当我';我根本不用布尔运算?(CS0029)
我正试图为我的团队制作一个概念验证的命令行软件,但是我的代码有点不对劲。编译器将代码视为我试图隐式地将字符串转换为布尔值,但我在这里根本没有使用任何布尔值,而且我绝不试图将任何内容转换为布尔值。以下代码段可用于重现该问题:C# 为什么VisualStudio说我';当我';我根本不用布尔运算?(CS0029),c#,.net,string,C#,.net,String,我正试图为我的团队制作一个概念验证的命令行软件,但是我的代码有点不对劲。编译器将代码视为我试图隐式地将字符串转换为布尔值,但我在这里根本没有使用任何布尔值,而且我绝不试图将任何内容转换为布尔值。以下代码段可用于重现该问题: namespace default { class test { static void Main() { Console.Clear(); string IsDemoMode;
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...
};
}
}
}
这里的问题是:为什么VisualStudio认为我正在尝试将字符串转换为布尔值,而我甚至还没有完成这项工作?编译器是否希望出现布尔值而不是字符串?您使用的是=而不是==。所以string=“一些文本”将为您提供string。字符串=“一些文本”将为您提供bool
namespace default {
class test {
static void Main() {
Console.Clear();
string IsDemoMode;
Console.WriteLine("Activate Demo Mode? (Y/N)");
IsDemoMode = Console.ReadLine();
if (IsDemoMode == "Y")
{
// Demo code...
} else
{
// Non-Demo Code...
};
}
}
}
UPD。在这种情况下,更建议使用Equals。所以如果你想的话,你可以忽略这个案例,等等
namespace default {
class test {
static void Main() {
Console.Clear();
string IsDemoMode;
Console.WriteLine("Activate Demo Mode? (Y/N)");
IsDemoMode = Console.ReadLine();
if (IsDemoMode.Equals("Y", StringComparison.InvariantCultureIgnoreCase))
{
// Demo code...
} else
{
// Non-Demo Code...
};
}
}
}
您应该在if中使用==而不是=:
if (IsDemoMode == "Y")
{
//Demo mode
}
将代码更改为
if(IsDemoMode.ToLower() == "y")
{
// Demo code...
}
else
{
// Non-Demo Code...
}
if(string IsDemoMode=“Y”)
应该是if(string IsDemoMode==“Y”)
。。。您当前的代码是一个作业。@Filburt谢谢您的帮助,问题似乎已经解决了。不过,为了澄清一下,为什么只有1个或2个=符号很重要?我的理解是“==”和“=”是同一件事。@MeowcatMcMeowXVIII赋值和等于之间有区别。您仍然可以在if-like“if((somestring=otherstring)==third-string)”@MeowcatMcMeowXVIII中同时使用这两个字符串,在这种情况下最好使用“equals”。请在我的更新版中检查样本answer@MeowcatMcMeowXVIII并确认您可以获得+2声誉的答案之一;)