Visual Studio / resharper不会将PropertyInfo.GetValue返回的对象视为null

时间:2012-07-06 21:57:16

标签: c# visual-studio-2010 resharper warnings

我正在通过调用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。发生了什么事?

1 个答案:

答案 0 :(得分:1)

John Skeet是对的。在使用变量后我检查了null。我重新安排了我的代码,以便在使用变量之前进行空检查,问题就消失了。有点奇怪的是我之前没有得到空参考警告,而且我应该有。