2013-11-21 6 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 является нулевым, а V.ValB равны нулю, он должен прервать условие if. Какими были бы средства для решения этой проблемы?

+2

Erm, добавьте нулевую проверку для обоих значений в условии? –

ответ

0

Вы могли бы сделать что-то вроде:

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

Если я читаю ваш вопрос правильно

0

Просто добавьте еще один чек на ваш, если заявление перед вашими равными. например

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

Это должно быть так же просто, как это:

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

я говорю, потому что если v.ValA не null но v.ValB это будет вычисляться false в любом случае.

Смежные вопросы