抱歉要问这个问题,我本以为我知道答案,如果userName大于4个字符或者userName不是一个叫做student的账户,我想退出程序。但是即使userName只有3个字符并且不是student,我仍然会遇到Application.Exit。我做错了什么?
if (userName.Length > 4 | userName != "student")
{
Application.Exit();
}
我真是太丢人了 :-(
抱歉要问这个问题,我本以为我知道答案,如果userName大于4个字符或者userName不是一个叫做student的账户,我想退出程序。但是即使userName只有3个字符并且不是student,我仍然会遇到Application.Exit。我做错了什么?
if (userName.Length > 4 | userName != "student")
{
Application.Exit();
}
我真是太丢人了 :-(
虽然你应该使用||
而不是|
,但在这种情况下它们会产生相同的结果。尽管其他答案获得了赞同,但将|
更改为||
不会解决你的问题。
你真正的问题是你希望检查的条件总是为真。要么你的用户名不是student
,要么它是student
并且长度超过4个字符。
当你有一个只有3个字符的用户名时,它不等于“student”,因此程序退出。
从你对期望结果的描述中,我认为你的意思是:
if (userName.Length > 4 && userName != "student")
{
Application.Exit();
}
您需要使用布尔 OR (||
) 运算符,而不是位 OR (|
)。
就像我在评论中所说的那样,您的逻辑对我来说并没有任何意义。按照目前的方式,该语句将始终为 true:
如果 userName 不是 student,则该语句为 true,应用程序退出。
如果 userName 是 student,则长度大于 4,并再次为 true(导致退出)。
您可以更改如下内容:
if(username.Length > 4 && userName != "student")
{
Application.Exit();
}
从逻辑上讲,这更有意义,但由于我不知道您的意图,不能保证它能按照您想要的方式工作。
if (userName.Length > 4 || userName.ToLower() != "student")
{
Application.Exit();
}
试试这个。
ToLower()
的影响可能取决于 UI 如何接受输入。此外,用户名可能区分大小写... - Jamesif (userName != "student")
,我认为没有必要进行额外的检查,这是可以在用户界面中强制执行的内容。如果我没错的话,您正在尝试在任一条件为真时进入if循环。即,进入if循环
像用户名=“ABC”这样的条件不是“学生”,您的条件仍然正确并将进入。当userName等于=“student”时,它仍将执行;
在这里,您应该使用AND运算符而不是OR运算符。
if (userName.Length > 4 & userName != "student")
{
Application.Exit();
}
您也可以使用 && 运算符来实现相同的结果。& 运算符与 && 运算符相同。 当 X = false 且 Y = true 时,Y 将不会被评估。因为 X 已经是 false。这种方法也称为短路评估。
student
时,你的应用程序才会退出。 - AndreyEquals
方法为什么不是类型安全的? - James