Contract.requires(…)
specifices a precondition that must be met before the method is allowed to be called
Contract.Ensures( …, “…”)
specifies a post-condition that is evaluated after a method is invoked.
Debug.Assert(…)
will display a message box if condition is not met but does not escape the method
Trace.Assert(…, “…”
writes to the trace log if condition is not met)