c#operator ==无法使用(string to char)

时间:2014-10-30 08:32:22

标签: c# string char

我如何制作它以使==确实可以处理字符串和字符。

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'类型的操作数和' char''

        {

        }

        Console.ReadLine();
    }
}

}

6 个答案:

答案 0 :(得分:2)

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

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

if (random == input)

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

以下是一些选项:

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

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

但正如其他答案所提到的那样,在您的特定情况下,您最好只是从控制台读取一个角色。

答案 3 :(得分:0)

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

如果想要允许用户输入一行字符并检查它是否包含单个指定字符,那么您将需要使用前者。如果您想阅读单键,请使用后者。

答案 4 :(得分:0)

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

char myChar = 'a';
string myString = "a";

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

答案 5 :(得分:0)

您可以使用:

  • Console.ReadKey().KeyChar仅获取第一个键入的字符。
  • Console.ReadLine().First(),但它允许用户编写整个字符序列。

小心使用ReadKey方法,因为它允许用户按 SHIFT CTRL 或任何其他键,即使他们没有“书面”表示,如果你打算只比较“可写”字符。