静态检查器不提供参数!= null

时间:2016-07-09 19:05:36

标签: c# code-contracts

当我了解代码合同时,我认为我可以执行以下操作:

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);
}

但是,没有。

我看到三种不同的可能性:

  1. 我做错了什么。
  2. 代码合同不应该这样做。
  3. 静态检查器不是很好。
  4. 是哪一个?

    以下是我的设置:

    enter image description here

1 个答案:

答案 0 :(得分:1)

原来问题是检查“推断要求”选项。我不完全理解为什么,但是当我关闭它时它会起作用。

我也发现这个链接指的是同一个问题:
https://github.com/Microsoft/CodeContracts/issues/439