为什么当我根本不使用布尔值时,Visual Studio会说我正在尝试将字符串转换为布尔值? (CS0029)

时间:2018-10-14 17:34:54

标签: c# .net string

我正在尝试为团队制作概念验证命令行软件,但是我的代码有些不对劲。编译器对待代码的方式就好像我要隐式地将字符串转换为bool值一样,但是在这里我根本不使用任何布尔值,而且我绝不试图将任何东西都转换为一个布尔值。以下代码段可用于重现该问题:

 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认为我什至在不打算将字符串转换为布尔值的时候?编译器是否期望布尔值而不是字符串?

3 个答案:

答案 0 :(得分:3)

您使用的是=而不是==。因此,字符串 = “某些文本”将为您提供字符串。字符串 == “一些文本”将为您提供 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。在这种情况下,建议使用等于。因此,您可以忽略大小写,等等。

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...
                 };
               }
          }
 }

答案 1 :(得分:0)

您应该在if中使用==而不是=

if (IsDemoMode == "Y")
{
    //Demo mode
} 

答案 2 :(得分:0)

将代码更改为

        if(IsDemoMode.ToLower() == "y") 
         {
            // Demo code...
         } 
         else 
         {
            // Non-Demo Code...
         }