开发者

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 开发者_如何学Caway 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?


The version that uses Contract.Exists is preferred due to its declarative nature. Another advantage is that the framework knows this contract and it has better chance of being "caught" in static analysis.


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜