2011-12-05 34 views
0

我有一個更大的代碼塊,我在這個簡單的例子已經重建:可空對象必須有一個值VB

Dim evalcheck As Boolean 
    Dim aEntityId, bEntityId As Integer? 
    Dim aCheckNumber, bCheckNumber As Integer? 

    aEntityId = Nothing 
    bEntityId = Nothing 
    aCheckNumber = Nothing 
    bCheckNumber = Nothing 
    evalcheck = aEntityId = bEntityId And aCheckNumber = bCheckNumber 

我得到null的對象時,我比較沒有什麼可沒有對必須有一個值。

有速戰速決的EVAL部分 -

evalcheck = aEntityId = bEntityId And aCheckNumber = bCheckNumber 

回答

0

你真的應該使用圓括號以提高可讀性。即使那樣,比較也很難看。

If ((aEntityId IsNot Nothing And bEntityId IsNot Nothing) AndAlso (aEntityId = bEntityId)) Or (aEntityId Is Nothing And bEntityId Is Nothing) Then 
    If ((aCheckNumber IsNot Nothing And bCheckNumber IsNot Nothing) AndAlso (aEntityId = bEntityId)) Or (aCheckNumber Is Nothing And bCheckNumber Is Nothing) Then 
     evalcheck = True 
    Else 
     evalcheck = False 
    End If 
Else 
    evalcheck = False 
End If 

我喜歡這種方法更好,雖然

Private Function NullableIntsEqual(ByVal a As Integer?, ByVal b As Integer?) As Boolean 
    If ((a IsNot Nothing And b IsNot Nothing) AndAlso (a = b)) Or (a Is Nothing And b Is Nothing) Then 
     Return True 
    Else 
     Return False 
    End If 
End Function 

您evalcheck線變得

evalcheck = NullableIntsEqual(aEntityId, bEntityId) And NullableIntsEqual(aCheckNumber, bCheckNumber) 
相關問題