私は VS2008 ( http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx ) でコード コントラクトを使用してきました。
それらは確かに優れており、メソッド内の if-then-throw チェックの確実な代替手段を提供します。
それにもかかわらず、null 非許容の参照型に対して私が強く感じているニーズを満たすことができることを望んでいました。
残念ながら、私が見る限り、そうではないようです。
これは私が理解したものです:
このようなものは、実行時に問題を引き起こします。
MyClass a = null;
a.ToString();より簡潔で合理化された方法であっても、チェックを明示的に記述する必要があります。
VS Team System を使用しない限り、コード コントラクトを使用して実行時にチェックすることしかできず、コンパイル時にメリットはありません。
何か問題が発生した場合でも、処理する必要があることを意味します。
単純な例外の処理と大差ありません。VSTS の静的分析を使用しても、実行時に行われる分析ほど効果的ではありません。
これは完全に理解できますが、この機能がランタイムでの使用を意図していることを示すもう 1 つの兆候です。
私が間違っている場合は修正してください。ただし、コード コントラクトが私の生活を楽にし、null 非許容の参照型のようにプログラムをより堅牢にする方法はありません。
誤解しないでほしいのですが、私はコード コントラクトが嫌いではありません。
それらは、フレームワーク全体に対する非常に優れた拡張機能です。
ただ、null 非許容の参照型を持たないことによって C# が残したギャップをこれで埋められない場合、現時点では何も埋められないのではないかと心配しています。
どう思いますか?