頭のてっぺんから、null 引数をチェックする 4 つの方法を考えることができます。
Debug.Assert(context != null);
Contract.Assert(context != null);
Contract.Requires(context != null);
if (context == null) throw new ArgumentNullException("context");
私は常に最後の方法を使用してきましたが、Contract.Requires
慣れていない を使用したコード スニペットを見ただけです。各方法の長所/短所は何ですか? 他の方法はありますか?
Resharper を使用した VS2010 では、
Contract.Assert
式が常に true であることを警告します (どのように知っているのか、よくわかりません... HttpContext を null にすることはできませんか?)、Contract.Requires
フェードアウトし、コンパイラーがメソッドを呼び出さないことがわかります (前の理由により、null になることはないと思います)。- 最後のメソッドを
context != null
次のすべてのコードに変更すると、フェードアウトし、コードがヒューリスティックに到達できないことがわかります。
したがって、最後の 3 つのメソッドには、VS 静的チェッカーに何らかのインテリジェンスが組み込まれているようであり、Debug.Assert
単に馬鹿げています。