using System.Diagnostics.Contracts;
class C
{
public C(bool x)
{
Contract.Ensures(this.X == x); // is this necessary?
this.X = x;
}
public readonly bool X; // could be a property instead,
} // I'm just trying to keep this example simple
このコンストラクターのポイントはフィールドを初期化することであり、コントラクトはその意図をキャプチャするだけです。コントラクトは、それが適用されるコードと同じ複雑さを持っています。私には、同じコードを 2 回 (わずかに異なる 2 つの視点からではありますが) 書いたかのように冗長に感じます。
この種の「マイクロコントラクト」はまったく必要ですか、それともコードコントラクトはメソッド本体からこれらを推測しますか?