-
Code Contracts
I've read an article "Code Contracts in .NET" by cilu recently, but I'dont understood all, so I'd ask few more question:
1. What is the difference between code contracts and assertions (e.g. Debug.Assert)?
2. Are they enforced by compiler in some way, or work only in run-time?
3. What is the main benefit?
-
Re: Code Contracts
No, they are not enforced by the compiler. There are tools that compile the contracts separately and can modify the MSIL code to assert at runtime, if you have the runtime check enabled. If you have these tools it's like you don't even have the contracts in your code.
You can read more about it here: http://research.microsoft.com/en-us/projects/contracts/.
As for the difference between Debug.Assert, the Contracts.Assert is that the later is recognized by these tools, while the former isn't.