C# visual studio/resharper未将PropertyInfo.GetValue返回的对象视为null

C# visual studio/resharper未将PropertyInfo.GetValue返回的对象视为null,c#,visual-studio-2010,resharper,warnings,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为null(我不确定哪一个显示了警告)。我在设计时没有得到可能的空引用警告。如果我创建一个条

我通过调用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为null(我不确定哪一个显示了警告)。我在设计时没有得到可能的空引用警告。如果我创建一个条件,比如
If(sVal==null)
,我将得到一个设计时警告,该表达式总是false


sVal只是一个对象,对象可以为null。我不认为GetValue保证永远不会返回null。发生了什么事?

约翰·斯基特是对的。在处理变量后,我正在检查null。在处理变量之前,我重新安排了代码进行空检查,问题就消失了。奇怪的是,我以前没有收到空引用警告,我应该收到。

警告是什么样子的?请展示一个简短但完整的程序,其中给出了警告。我强烈怀疑这不是你认为的代码。可能是因为第一个
var sExpr=s.Body作为MemberExpression
是R#识别为可能为空的。另外,完全是OT,但是:您可以通过执行
(PropertyInfo)sExpr.Member
直接从sExpr访问PropertyInfo。应该通过避免反射来节省一些周期