【问题标题】:error: cs0131 The left-hand side of an assingnment must be a variable, property or indexer错误:cs0131 赋值的左侧必须是变量、属性或索引器
【发布时间】:2018-08-10 00:27:51
【问题描述】:

我曾尝试进行文本冒险,但当我到达“如果”部分时出现错误。我让它工作了一次,但不像我想要的那样。

我稍微改变了一下然后放弃并转到原始脚本但是它不像上次那样工作而是给了我这个错误:

cs0131 赋值的左侧必须是变量, 属性或索引器

这是我的代码:

Console.WriteLine("What's your name");
string name = Console.ReadLine();
Console.Write("Hello " + name);
Console.WriteLine(" do you like games?");
Console.WriteLine("yes or no");
string yes = Console.ReadLine();
string no = Console.ReadLine();

if (Console.ReadKey() = yes) { Console.WriteLine("Great!, Lets play one"); }
//the error is at "if (console.readkey()"

【问题讨论】:

  • 您使用的是赋值运算符 (=) 而不是等号 (==)。它应该是Console.ReadKey() == yes
  • 另外:Console.ReadKey()不会返回你期望的,请阅读documentation。你可能是说string answer = Console.ReadLine(); if (answer == "yes")...

标签: c#


【解决方案1】:

在 C# 和许多语言中,分配一个变量等于一个值和测试是否相等是有区别的。

在 C# 中,= 用于赋值。 int x = 1; 将创建一个值为1 的变量。

==用于测试一个值,所以你会写if (x == 100) { /* something */ }

【讨论】:

    【解决方案2】:

    继续你当前的代码,你可能应该有更多这样的东西:

    Console.WriteLine("yes or no");
    string answer = Console.ReadLine();
    
    if (answer == "yes") { Console.WriteLine("Great!, Lets play one"); }
    

    主要区别是:

    1. 您正在阅读用户在询问“是”或“否”后输入的答案,但是在您的代码中您正试图重新阅读另一个答案。这不太合理。控制台将挂起,直到用户输入另一个响应。

    2. As JamesFaix said,在你问他们是否想玩之后,你试图为Console.ReadKey()分配一个值,无论用户首先响应什么。相反,您应该检查用户的回复是否是肯定的回复。

    【讨论】:

    • 第一个谢谢你第二个你能解释一下#if 是用来做什么的吗?
    • if 正在检查用户输入的提示符是否等于字符串“yes”。如果是这样,它会显示您的消息
    猜你喜欢
    • 1970-01-01
    • 2015-07-07
    • 1970-01-01
    • 2017-05-28
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    相关资源
    最近更新 更多