不能使用c#运算符==(字符串到字符)

本文关键字:字符串 字符 不能 运算符 | 更新日期: 2023-09-27 18:28:20

如何使==对字符串和字符起作用。

class Program
{
    static void Main(string[] args)
    {
        string a;
        // get random lowercase letter
        Console.WriteLine(RandomLetter.GetLetter());
        a = Console.ReadLine(); 
        if (a == RandomLetter.GetLetter())

错误"运算符"=="不能应用于类型为"string"answers"char"的操作数

        {
        }
        Console.ReadLine();
    }
}

}

不能使用c#运算符==(字符串到字符)

如果只想读取一个字符,请使用Console.ReadKey方法

char random = RandomLetter.GetLetter();
Console.WriteLine(random);
char input = Console.ReadKey().KeyChar; 
if (random == input)
(a == RandomLetter.GetLetter().ToString())

所有对象上的ToString()覆盖可用于将任何内容更改为字符串。

以下是一些选项:

if (a == RandomLetter.GetLetter().ToString()) ...

if (a.Length == 1 && a[0] == RandomLetter.GetLetter()) ...

但正如其他答案所提到的,在你的特殊情况下,你可能最好只从控制台中读取一个字符。

Console.ReadLine()将整行读取为String,因此无法直接将其与单个字符进行比较。您需要将字符转换为String,以便进行比较(.ToString()),或者读取用户输入的单个密钥,例如使用Console.ReadKey().KeyChar而不是Console.ReadLine()

如果想法是允许用户输入一行字符并检查它是否由单个指定字符组成,那么您将希望使用前者。如果您想阅读单个按键,请使用后者。

尝试仅将字符串的第一个字母与char进行比较(因为字符串只是char类型的数组)。通过这种方式,如果用户输入的内容超过了您的要求,程序就不会崩溃。

char myChar = 'a';
string myString = "a";
if (myChar == myString[0])
{
    Console.WriteLine("it's a match");
    Console.ReadLine();
}

您可以使用:

  • Console.ReadKey().KeyChar只获取第一个类型化的字符
  • Console.ReadLine().First(),但它允许用户编写整个字符序列

使用ReadKey方法要小心,因为它允许用户按SHIFTCTRL或任何其他键,即使它们没有"书面"表示,如果您只想比较"可写"字符,也是如此。