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);

何らかの理由で、コンパイラ/リシャーパーによって sVal が null と見なされることはありません (どちらが警告を表示しているのかわかりません)。設計時に null 参照の可能性のある警告が表示されません。のような条件を作成するif(sVal == null)と、式が常に false であるという設計時の警告が表示されます。

sVal は単なるオブジェクトであり、オブジェクトは null になる可能性があります。GetValue が決して null を返さないことを保証するとは思いません。どうしたの?

4

1 に答える 1

1

ジョン・スキートは正しかった。変数を操作した後、nullをチェックしていました。変数を操作する前にnullチェックを実行するようにコードを再配置したところ、問題は解決しました。奇妙なことに、これまでnull参照の警告が表示されなかったので、表示する必要があります。

于 2012-07-06T22:18:51.720 に答える