0

私のコードにはいくつかのContract.Assertステートメントがあります。デバッグ モードの場合、失敗したアサーションはアサーション失敗ダイアログをスローします。

これについて私が理解していないことが2つあります:

  1. 契約はリライターによって管理されていませんか? ですから、それがチェックされていなければ、契約は強制されないと思いました。そうでない場合、ランタイム チェック チェックボックスによって何が制御されますか? そうでないものは何ですか?

  2. アサーション ダイアログがスローされるのはなぜですか? Silverlight では、アサーションが失敗したことを示す IE ダイアログが表示されるだけなので、それらは役に立たないように思えます。私は例外を好むでしょう。

グレッグ

4

2 に答える 2

0

1 - コントラクトはコントラクトです。必要でない場合、なぜコントラクトを使用する必要がありますか? おそらく、コントラクトで null ラベル値を使用できます。2 - まさにこれを行うことをアサートし、何かが摩耗していることを開発者に示します。これは主に開発環境で使用されます。本番環境に置くときは、この検証を IL から除外するためにリリースに組み込むことを忘れないでください。

于 2013-09-27T00:57:01.750 に答える