Contract.Exists如何增加价值?

sco*_*obi 9 c# code-contracts

我刚刚开始了解VS2010标配的代码契约库.我正在遇到的一件事是一些合同条款的真正含义.

例如,这两个陈述有何不同?

Contract.Requires(!mycollection.Any(a => a.ID == newID));
Contract.Requires(!Contract.Exists(mycollection, a => a.ID == newID));
Run Code Online (Sandbox Code Playgroud)

换句话说,Contract.Exists在实际应用中做了什么,对于使用我的函数的开发人员,还是对于静态代码分析系统?

sco*_*obi 1

好的,我找到了答案。根据《代码合约用户手册》第 2.7.2 节:

“也可以使用扩展方法 System.Linq.Enumerable.Any 而不是 Contract.Exists 。”

所以它们是等价的。我将使用 Any 而不是 Exists,因此它与我们代码的其余部分一致。