.NET 4.0 にコントラクトが導入されて以来、Microsoft がこれを BCL のようにすべてのクラスに広めたのではないかと考えています。
そうでない場合、なぜですか?この種の機能は、標準ライブラリでデフォルトでサポートされている場合にのみ意味がありますよね?
BCL のすべてではありません。
Code Contracts はまだ IDE と言語に完全には組み込まれていないことを考慮してください。個別のダウンロードです。開発者の浸透度が高まり、IDE との統合が強化され、BCL の完全な注釈が追加されれば、すぐに使用できるようになることは間違いありません。
No Code Contracts は、すべての BCL に追加されていません。最も一般的なクラスの多くには注釈が追加されていますが、BCL 全体には追加されていません。
ここでの主な理由は時間です。BCL は巨大であり、すべての BCL に正しいコントラクトを追加することは大規模な作業です。その結果、現時点では、.Net ユーザー ベースのごく一部にのみメリットがあります。コントラクトの人気が高まると、BCL 内での使用も同様に増加すると確信しています (はい、一方を行わないと、もう一方の可能性が低くなることはわかっています)。
この問題は、ユーザーがカスタム コントラクト アセンブリを宣言する機能によって軽減されます。これにより、見逃していたタイプにポスト アノテーションを付け、コントラクトの観点からコード ベースがクリーンになるポイントに到達できます。