對不起,問我這個問題,因爲我認爲我知道答案,如果userName大於4個字符或者userName不是名爲student的帳戶,我想退出該程序。但是,即使該用戶名只有3個字符,而不是學生,我仍然擊中了Application.Exit。我究竟做錯了什麼?對我C#簡單IF或問題
if (userName.Length > 4 | userName != "student")
{
Application.Exit();
}
恥辱:-(
對不起,問我這個問題,因爲我認爲我知道答案,如果userName大於4個字符或者userName不是名爲student的帳戶,我想退出該程序。但是,即使該用戶名只有3個字符,而不是學生,我仍然擊中了Application.Exit。我究竟做錯了什麼?對我C#簡單IF或問題
if (userName.Length > 4 | userName != "student")
{
Application.Exit();
}
恥辱:-(
雖然你應該使用||
而不是|
,他們會在這種情況下給出相同的結果。儘管其他答案upvoting,更改|
爲||
將不是解決您的問題。
你真正的問題是,你想檢查的條件將永遠是真實的。您的userName不是student
,或者它是student
,然後它也超過4個字符。
當你有一個只有3個字符的用戶名不等於學生,因此程序退出。
從你的你所期望的描述,我覺得你的意思是這樣的:
if (userName.Length > 4 && userName != "student")
{
Application.Exit();
}
非常感謝這:-) – Jamie 2010-05-24 13:09:27
您需要使用布爾OR(||
)運營商,而不是按位OR(|
)
正如我在我的評論說,雖然,你的邏輯。不一定任何意義,我這是書面方式的方式,該語句將永遠是正確的:
如果用戶名不是學生,語句true並退出應用程序。
如果userName是student,那麼長度> 4,並且語句再次爲真(這會導致退出)。
你可以改變的事情:
if(username.Length > 4 && userName != "student")
{
Application.Exit();
}
在邏輯上更有意義,但因爲我不知道你的意圖,我不能保證它會工作,你希望它的方式。
'if(userName.Length> 4 || userName!=「student」)' 是否意味着更少? – Andrey 2010-05-24 12:58:41
可以更好地使用Form.Close而不是Application.Exit(如果可能) http://stackoverflow.com/questions/1057151/application-exit – 2010-05-24 12:59:11
@Andrey你是對的,語句的邏輯不明確的意義......但我不能看到他/她的代碼的其餘部分知道什麼是正確的邏輯。我所能看到的只是他顯然使用錯誤的操作員來進行比較。 – 2010-05-24 13:01:10
通過觀察您的要求爲您的字符長度檢查是微不足道的,或者至少你沒有提到的理由你想檢查字符的長度。從您提供的示例中,我只需檢查if (userName != "student")
我沒有看到需要額外的檢查,這是可以在UI中強制執行的。
如果我沒有錯,當條件爲真時,您正嘗試進入if循環。 即進入if循環
條件類似於username =「ABC」是不是「學生」,你的條件仍然是對的,並會進入。當userName等於=「student」時它仍然會執行;
這裏你應該使用AND運算符而不是OR運算符。
if (userName.Length > 4 & userName != "student")
{
Application.Exit();
}
您也可以實現與& &運營商相同的結果。 & opertor與& &運營商相同。 當X = false且Y爲真時; Y根本不會被評估。由於X已經是假的。這個方法也叫短路評估。
此聲明沒有意義,因爲只有在userName爲'student'的情況下,您的應用纔會退出。 – Andrey 2010-05-24 13:03:16
我需要的是&&如下所示,謝謝大家!如果(userName.Length> 4 && userName!=「student」) } – Jamie 2010-05-24 13:05:55
@Jamie,它再次無用。 '「學生」.Length'>> 4無論如何:) – Andrey 2010-05-24 13:09:33