Code Contracts 如何知道 ToString 覆盖不应该 return null?

How does Code Contracts know that ToString overrides shouldn't return null?

我在 C# 中使用 Microsoft 的代码合同扩展。当我用 return 为 null 的覆盖 ToString 实现编写 class 时,它正确地识别了问题:

我认为这是因为 Microsoft 在内部使用代码契约,并且他们添加了对 Object.ToStringContract.Ensures 调用。但是,当我查看 Object.ToString source code 时,我没有看到任何合同(我确实看到了其他合同,但不是我正在寻找的合同)。 Code Contracts 如何确定 ToString 不应该 return null?

这是 System.Object 的代码合同内部定义:(link)。如您所见,他们定义了 ToString() 和这个约束:

Contract.Ensures(Contract.Result<string>() != null);

为了回答您的问题,Code Contracts 知道它不是空的,因为有内部合同定义。