Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么VisualStudio说我';当我';我根本不用布尔运算?(CS0029)_C#_.net_String - Fatal编程技术网

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声誉的答案之一;)