0

我通过调用 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)我会得到一个设计时警告,该表达式总是错误的。

sVal 只是一个对象,对象可以为空。我不认为 GetValue 保证永远不会返回 null。这是怎么回事?

4

1 回答 1

1

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

于 2012-07-06T22:18:51.720 回答