我正在使用c#中的简单密码存储控制台应用程序.
我在一个部分上遇到一些问题,询问用户是否希望屏蔽该点上的所有密码条目.
这是代码部分:
bool tryagain = true;
while(tryagain == true)
{
Console.WriteLine("Would you like to mask all other password entiries?(Y,N)");
string input = Console.ReadLine();
if (input == "y" | input == "Y")
//Something wrong, always passes to Your awnser was invalid
{
maskpass = true;
tryagain = false;
}
if (input == "n" | input == "N")
{
maskpass = false;
tryagain = false;
}
else
{
Console.WriteLine("Your awnser was invalid, would you like to try again?");
string yesno = Console.ReadLine();
if (yesno == "y" | yesno == "Y")
{
tryagain = true;
}
if (yesno == "n" | yesno == "N")
{
Environment.Exit(0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是当我运行代码时,它总是运行到else语句.
我确定这个错误非常简单,我只是无知,但任何人都不知道这里发生了什么?
使用||而不是单一|.该||均值或条件,但单|是二进制或.
我假设您的代码的逻辑说:
if input=='y' OR input=="Y", 做一点事.
还有另一种说法.如果我的假设正确,你可以用简单的String.Equals重载来实现:
if(input.Equals("y", StringComparison.InvariantCultureIgnoreCase)
{
//do something/
}
Run Code Online (Sandbox Code Playgroud)