それらの機能が何をするのか教えてください。
3 に答える
これらは、.NET でコード コントラクトを定義するためのフレームワーク ベースの言語に依存しないメソッドです。spec# や Delphi Prism などの一部の言語では、コード コントラクトに対する最上級の言語サポートが提供されていますが、このフレームワーク ベースのアプローチにより、すべての .NET 言語で利用できるようになります。IronRuby、IronPython、F#、VB.NET など
Require() は ENTRY のメソッド レベルのチェック、Ensure() は EXIT のメソッド レベルのチェック、Assert() は呼び出された時点でのチェックです。つまり、これらのメソッドが適用される実行のどの時点でも、それらに渡された条件が評価されます。その条件が満たされない場合、エラーが発生します。
他の人が言ったことに加えて、より高価なバージョンの Visual Studio を実行すると、コンパイル時にコントラクトをチェックすることもできます。そうすれば、たとえば、プログラムで引数が決して null にならないことを証明できます。これは、チェックが不要になり、C# コンパイラがそれを最適化できることも意味します。
これらのコンパイル時のチェックは、品質に対する要件が非常に高く、コードベースが比較的小さくタイトな場合に非常に役立ちます。