比较.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。
为什么会这样?
因为您还在末尾向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);