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
这个构造函数的重点是初始化一个字段,而合约仅仅捕获了这个意图。合约的复杂性与其适用的代码相同。对我来说,这感觉是多余的,就好像我刚刚写了两次相同的代码(尽管从两个稍微不同的角度来看)。
这种“微合同”是否必要,或者代码合同是否从方法体中推断出这些?