次のロジックのコードが少しあります。
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
理論的には、常に1つの要素が存在するため、この方法では問題は発生しません。いずれにせよ、念のため、メソッドの最後にアサーションを付けました。
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
Contract.Assert(false, "Invalid state!");
問題は、このメソッドが何かを返す必要があり、コンパイラがアサーションがプログラムの実行を中断することを理解していないことです。コントラクトを使用する前は、このような状況で、問題を解決するために例外をスローしていました。これをContract.Assert()でどのように処理しますか?Contract.Assert()呼び出しの後にnullまたはdefault(element_type)を返し、それが呼び出されないことを認識してコンパイラーをシャットダウンしますか?または、これを行う他のよりエレガントな方法はありますか?
ありがとう