4

それらの機能が何をするのか教えてください。

4

3 に答える 3

5

これらは、.NET でコード コントラクトを定義するためのフレームワーク ベースの言語に依存しないメソッドです。spec# や Delphi Prism などの一部の言語では、コード コントラクトに対する最上級の言語サポートが提供されていますが、このフレームワーク ベースのアプローチにより、すべての .NET 言語で利用できるようになります。IronRuby、IronPython、F#、VB.NET など

Require() は ENTRY のメソッド レベルのチェック、Ensure() は EXIT のメソッド レベルのチェック、Assert() は呼び出された時点でのチェックです。つまり、これらのメソッドが適用される実行のどの時点でも、それらに渡された条件が評価されます。その条件が満たされない場合、エラーが発生します。

于 2010-08-12T16:28:17.713 に答える
2

あなたのタイトルをグーグルで検索したところ、次のことがわかりました。

http://www.codeproject.com/KB/cs/designbycontract.aspx

基本的に、これらは「契約による設計」方法論を使用してコードを作成するのに役立つ方法です。

于 2010-08-12T16:22:07.770 に答える
0

他の人が言ったことに加えて、より高価なバージョンの Visual Studio を実行すると、コンパイル時にコントラクトをチェックすることもできます。そうすれば、たとえば、プログラムで引数が決して null にならないことを証明できます。これは、チェックが不要になり、C# コンパイラがそれを最適化できることも意味します。

これらのコンパイル時のチェックは、品質に対する要件が非常に高く、コードベースが比較的小さくタイトな場合に非常に役立ちます。

于 2010-08-12T19:57:06.803 に答える