2012-04-14 73 views
0

否則我有一個用戶對象,我有一個名爲用戶ID變量。測試爲空,一些在同一行的代碼

我想考兩件事情:

  • 用戶== NULL
  • user.UserID =用戶ID

如果用戶不爲空,否則第二次試驗應只是做了!我有一個運行時錯誤。

我不知道是否有可能在同一行測試兩個,像下面:

return ((user == null) && (user.UserID != userID)) 

但編碼方式類似於上述方法無效,因爲當用戶爲空我有一個運行時錯誤。

謝謝。

回答

0

我認爲C#和你想要一個布爾值==真,當用戶爲空OR用戶ID與user.UserID不同。所以答案是:

return ((user == null) || (user.UserID != userID)); 

OR邏輯運算符儘快停止其表達的評價,因爲它發現從最左邊的一個啓動條件爲真。

在用戶是否是空這種情況下,你有你的結果(真),並沒有必要測試第二個條件,因此,你避免空引用異常。

0

是的,你可以在一行做了檢查,但你應該使用一個or條件

return ((user == null) || (user.UserID != userID)) 
-1

我認爲是最容易閱讀的方式是:

如果你想真正如果用戶爲空:

return user == null || user.UserID != userID 

如果第一個條件滿足(這是真的),然後它不會檢查第二個。

或者,如果你想如果用戶爲空:

return user != null && user.UserID != userID 

如果第一個條件是滿足(這是假的),那麼就不會檢查第二。的&&||功率=)