Resharper がこれを回すように提案していることに気付きました。
if (myObj.myProp is MyType)
{
...
}
これに:
var myObjRef = myObj.myProp as MyType;
if (myObjRef != null)
{
...
}
なぜこの変更を提案するのでしょうか? 私はResharperが最適化の変更とコード削減の変更を提案することに慣れていますが、これは私の単一のステートメントを2行に変えたいと思っているように感じます.
MSDNによると:
is 式は、次の両方の条件が満たされる場合に true と評価されます。
式がヌルではありません。式はtypeにキャストできます。つまり、フォームのキャスト式は、
(type)(expression)
例外をスローせずに完了します。
nullチェック用に別のローカル変数を明示的に作成する必要なしに、1行だけでそれを読み間違えていますか、それともis
まったく同じチェックをしていませんか?