我正在通过调用GetValue来检索属性的值,如下所示:
//have T tObj;
var sExpr = s.Body as MemberExpression;
var sProp = typeof(T).GetProperty(sExpr.Member.Name);
var sVal = dProp.GetValue(tObj, null);
由于某些原因,编译器/ resharper从不认为sVal为空(我不确定哪一个显示警告)。我在设计时无法获得空参考警告。如果我创建一个像if(sVal == null)
这样的条件,我会得到一个设计时间警告表达式始终为false。
sVal只是一个对象,对象可以为null。我不认为GetValue保证永远不会返回null。发生了什么事?
答案 0 :(得分:1)
John Skeet是对的。在使用变量后我检查了null。我重新安排了我的代码,以便在使用变量之前进行空检查,问题就消失了。有点奇怪的是我之前没有得到空参考警告,而且我应该有。