6

すべての引数が null かどうかをチェックし、そうであれば ArgumenutNullExceptions をスローすることにひどくうんざりしています。

私が理解しているように、C# 4.0 ではコントラクトによる設計が可能です。C# 4.0 でメソッドが null 引数を受け入れないように指定することはできますか?

また、null をチェックしてスローするという単調なタスクを回避するために、その間にできることはありますか (おそらく属性ですか?)。

4

5 に答える 5

4

Rick Brewster は、この投稿で、簡潔で宣言的なスタイルのパラメーター チェックの優れたソリューションについて説明しています。

http://blog.getpaint.net/2008/12/06/a-fluent-approach-to-c-parameter-validation/

リフレクション (DbC の欠点) の使用を回避し、例外的でないコード パスのオーバーヘッドを作成しません。

彼が拡張メソッドを使用して、null オブジェクトのインスタンス メソッド呼び出しのように見えるものを許可する方法と同様です。非常に巧妙な IMO のコーディング。

DbC、Google Spec#、および PostSharp で販売されている場合。

于 2009-01-21T12:10:12.343 に答える
4

役立つジェネリック クラスを作成できますNotNull<T>が、いくつかの副作用があります。Robert Nystrom のブログ投稿を参照してください。

于 2009-01-12T00:30:40.290 に答える
2

C# 4.0 のネイティブ DbC コンストラクトについては不明ですが、Microsoft はクロス言語のコントラクトライブラリをリリースする予定です。
MSVS2008 のバージョンはこちらからダウンロードできます。

于 2009-01-12T00:50:24.353 に答える
0

コードコントラクトの使用を開始しました。C#4.0の新機能です。プロジェクト設定で表示できるようにするには、MSからアドインをダウンロードする必要があります。詳細はこちら-> http://research.microsoft.com/en-us/projects/contracts/

于 2010-07-11T00:20:04.720 に答える