Search code examples
c#code-contracts

How does Contract.Exists add value?


I am just starting to learn about the code contracts library that comes standard with VS2010. One thing I am running into right away is what some of the contract clauses really mean.

For example, how are these two statements different?

Contract.Requires(!mycollection.Any(a => a.ID == newID));
Contract.Requires(!Contract.Exists(mycollection, a => a.ID == newID));

In other words, what does Contract.Exists do in practical purposes, either for a developer using my function, or for the static code analysis system?


Solution

  • Ok, I found the answer. According to the Code Contracts User Manual, section 2.7.2:

    "It is also possible to use the extension method System.Linq.Enumerable.Any instead of Contract.Exists ."

    So they are equivalent. I will use Any instead of Exists, so it is consistent with the rest of our code.