C#简单如果或问题

Jam*_*mie 5 c#

很抱歉问这个,因为我认为我知道答案,如果userName大于4个字符或userName不是名为student的帐户,我想退出程序.但是,即使userName只有3个字符而且不是学生,我仍然会点击Application.Exit.我究竟做错了什么?

if (userName.Length > 4 | userName != "student")
{
    Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)

对我感到羞耻:-(

Mar*_*ers 15

虽然您应该使用||而不是|,但在这种情况下它们会给出相同的结果.尽管其他答案的upvoting,改变|||不会解决你的问题.

您真正的问题是您要检查的条件始终为真.您的userName不是student,或者它是student,然后它也超过4个字符.

当您的用户名只有3个字符时,它不等于学生,因此程序退出.

根据您对预期的描述,我认为您的意思是:

if (userName.Length > 4 && userName != "student")
{
    Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)


Jus*_*ner 6

你需要使用布尔OR(||)运算符而不是按位OR(|)

正如我在评论中所说,你的逻辑对我来说并不一定有意义.它的写作方式,声明永远是真的:

  • 如果userName不是student,则该语句为true且应用程序退出.

  • 如果userName是student,则length> 4并且语句再次为true(这会导致退出).

你可以改变:

if(username.Length > 4 && userName != "student")
{
    Application.Exit();
}
Run Code Online (Sandbox Code Playgroud)

这在逻辑上更有意义,但由于我不知道你的意图,我不能保证它会以你想要的方式工作.