当我了解代码合同时,我认为我可以执行以下操作:
public void ContractTest(string input)
{
Contract.Requires(input != null);
}
public void ContractTestCaller(string input)
{
this.ContractTest(input);
}
并收到警告,因为无法在input != null
中证明ContractTestCaller
。但是我没有收到警告
然后我想我在做这件事时至少会收到警告:
public void ContractTestCallerCaller()
{
this.ContractTestCaller(null);
}
但是,没有。
我看到三种不同的可能性:
答案 0 :(得分:1)
原来问题是检查“推断要求”选项。我不完全理解为什么,但是当我关闭它时它会起作用。
我也发现这个链接指的是同一个问题:
https://github.com/Microsoft/CodeContracts/issues/439