【问题标题】:Why do I keep getting: Cannot implicitly convert type string to type bool?为什么我不断收到:无法将类型字符串隐式转换为布尔类型?
【发布时间】:2013-01-20 17:23:38
【问题描述】:

我是 C# 新手,我不知道这段代码有什么问题。我正在创建一个测验,如果答案是正确的,我试图说做得好,但它不断提出不能将类型字符串隐式转换为类型 bool。

这是我的代码:

{
    int score = 0;
    Console.WriteLine(" What is your name?");
    string name = "";
    name = Console.ReadLine();

    Console.WriteLine("Hello " +name+ " and welcome to the Formula 1 quiz.");
    Console.ReadLine();

    Console.WriteLine("Question 1: How many races has Michael Schumacher won.");
    Console.ReadLine();

    Console.WriteLine("a) 91");
    Console.WriteLine("b) 51");
    Console.WriteLine("c) 41");
    Console.WriteLine("d) 31");

    Console.ReadLine();
    string answer = Console.ReadLine();

    if (answer = a) Console.WriteLine("Well done");
    else Console.WriteLine("Wrong answer");
}

【问题讨论】:

  • 您可以通过单击旁边的大复选标记将答案标记为已接受。

标签: c#


【解决方案1】:

变化:

if (answer =  a)

if (answer ==  "a")

【讨论】:

    【解决方案2】:

    您在此处的if 语句中使用了赋值运算符 (=):

    if (answer =  a)
    

    从外观上看,你想将他们输入的内容与a的字符串进行比较,所以你需要先使用比较运算符(==),然后实际将其与字符串进行比较:

    if (answer == "a")
        Console.WriteLine("Well done");
    else
        Console.WriteLine("Wrong answer");
    

    Visual Studio(或您正在使用的任何 IDE)应该真正了解这一点,因为 a 未声明(或 bool)。


    在一个无关的注释中,因为上面已经回答了,你可以在这里改变你的变量声明和赋值在同一行,因为不需要分开声明和赋值。

    string name = "";
    name = Console.ReadLine();
    

    到:

    string name = Console.ReadLine();
    

    【讨论】:

    • 当我输入a时,什么也没有发生,你知道这是为什么吗?不过谢谢!
    • 是的,你需要输入a 然后按回车,这就是ReadLine() 所做的。您可能需要考虑使用ReadKey,它会给您一个ConsoleKeyInfo 对象,在这种情况下将您的if 更改为if (answer.KeyChar == 'a') {
    • 我按回车但没有任何反应?
    • 是的,框消失,一旦程序执行完成,框就会消失。为避免这种情况,您可以在方法末尾添加另一个 Console.ReadLine()。最好的方法当然是不这样做,只需从cmd 执行您的程序。
    • @user1993587 您应该接受这个问题的答案,如果您需要其他主题的帮助,请询问其他人。也就是说,这是相当基本的,并不能真正保证另一个问题,您应该考虑阅读 C# 基础知识。另请注意,SO 是一个问答网站,而不是论坛。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多