比较.ToString()时出现问题

本文关键字:问题 ToString 比较 | 更新日期: 2023-09-27 18:25:34

所以我正在制作一个模拟程序,只是为了更习惯c#,下面是我所拥有的:

ConsoleKeyInfo Input;
StringBuilder sb = new StringBuilder();
const string Password = "class";
Console.Write("Input Your Password: ");
    do
    {
        Input = Console.ReadKey(true);
        sb.Append(Input.KeyChar); 
    } while (Input.Key != ConsoleKey.Enter);
    Console.WriteLine();
    if (sb.ToString() == Password)
    {
       Console.WriteLine("Correct Password!");
    }
    Console.WriteLine("You Entered: " + sb.ToString());
    Console.WriteLine("The Pass is: " + Password);
    Console.ReadLine();

但是当我比较sb.ToString()Password时,我的if语句有一个问题。尽管如果将与Password相同的东西放入,if语句仍然不会变为true。

为什么会这样?

比较.ToString()时出现问题

因为您还在末尾向StringBuilder添加Enter密钥,所以您可以在添加之前检查它:

do
{
    Input = Console.ReadKey(true);
    if(Input.Key != ConsoleKey.Enter)
       sb.Append(Input.KeyChar); 
} while (Input.Key != ConsoleKey.Enter);

或者,你也可以像这样重构你的循环,而不是检查两次:

while ((Input = Console.ReadKey(true)).Key != ConsoleKey.Enter)
   sb.Append(Input.KeyChar);