我正在查看类型的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为null,则此代码在if条件下失败。我正在寻找具有此对象的对象之间的差异,并且如果v.ValA为null并且V.ValB都为null,则它应该使if条件失败。处理此问题的建议方法是什么?
答案 0 :(得分:1)
应该这么简单:
if (v.ValA == null || !v.ValA.Equals(v.ValB))
{
variances.Add(v);
}
我之所以这样说是因为如果v.ValA
不是null
而v.ValB
,那么无论如何它都将评估为false
。
答案 1 :(得分:0)
您可以执行以下操作:
if ( !(v.ValA==null && v.valB==null) || !v.ValA.Equals(v.ValB))
如果我正确地阅读了您的问题
答案 2 :(得分:0)
在等于之前,只需在if语句中添加另一个检查。例如
!(v.ValA == null && v.ValB == null)