我对代码合同相当陌生,所以我可能在这里做了一些愚蠢的事情:)
我收到错误
检测到的表达式语句评估了方法“##”的合同中的潜在副作用。(您的意思是将表达式放入 Requires、Ensures 或 Invariant 调用中吗?)
我有以下合同
Contract.Requires<ArgumentNullException>(obj != null);
Contract.Requires<ArgumentNullException>(obj.Id != null);
它在第二份合同上失败obj.Id != null
(Id
是 a Guid
)
现在有可能Id
是null
方法中不允许的。但是代码契约引发了上述编译错误。它自己的方法实际上并没有返回任何东西,因此也不需要确保。
我已经删除了合同,所以我可以编译并放置一个标准if
检查。但这是什么原因造成的?