2013-11-21 106 views
0

我正在查看類型的FieldInfo,並收集有關類型的屬性信息。此代碼如下所示:對象屬性比較,處理空檢查的最佳方法?

foreach (FieldInfo f in fi) 
{ 
    Foo<T> v = new Foo<T>(); 
    v.Prop = f.Name; 
    v.ValA = f.GetValue(val1); 
    v.ValB = f.GetValue(val2); 

    if (!v.ValA.Equals(v.ValB)) 
    { 
     variances.Add(v); 
    } 
} 

但是,此代碼失敗的,如果條件下,如果v.ValA和v.ValB爲空。我正在尋找與此對象之間的差異,並且如果v.ValA爲null並且V.ValB都爲null,它應該會失敗if條件。建議的處理方法是什麼?如果我讀你的問題正確

+2

呃,爲條件中的兩個值添加空檢查? –

回答

0

你可以做這樣的事情。例如

!(v.ValA == null && v.ValB == null) 
0

只要你等號之前另一個檢查添加到您的if語句

if (!(v.ValA==null && v.valB==null) || !v.ValA.Equals(v.ValB)) 

1

它應該是如此簡單:

if (v.ValA == null || !v.ValA.Equals(v.ValB)) 
{ 
    variances.Add(v); 
} 

我這樣說是因爲如果v.ValA不是nullv.ValB是它會評估爲false反正。