Contract Class
[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]
Contains static methods for representing program contracts such as preconditions, postconditions, and object invariants.
Assembly: mscorlib (in mscorlib.dll)
The Contract type exposes the following members.
| Name | Description | |
|---|---|---|
![]() ![]() | Assert(Boolean) | Checks for a condition; if the condition is false, follows the escalation policy set for the analyzer. |
![]() ![]() | Assert(Boolean, String) | Checks for a condition; if the condition is false, follows the escalation policy set by the analyzer and displays the specified message. |
![]() ![]() | Assume(Boolean) | Instructs code analysis tools to assume that the specified condition is true, even if it cannot be statically proven to always be true. |
![]() ![]() | Assume(Boolean, String) | Instructs code analysis tools to assume that a condition is true, even if it cannot be statically proven to always be true, and displays a message if the assumption fails. |
![]() ![]() | EndContractBlock | Marks the end of the contract section when a method's contracts contain only preconditions in the if-then-throw form. |
![]() ![]() | Ensures(Boolean) | Specifies a postcondition contract for the enclosing method or property. |
![]() ![]() | Ensures(Boolean, String) | Specifies a postcondition contract for a provided exit condition and a message to display if the condition is false. |
![]() ![]() | EnsuresOnThrow<TException>(Boolean) | Specifies a postcondition contract for the enclosing method or property, based on the provided exception and condition. |
![]() ![]() | EnsuresOnThrow<TException>(Boolean, String) | Specifies a postcondition contract and a message to display if the condition is false for the enclosing method or property, based on the provided exception and condition. |
![]() ![]() | Exists(Int32, Int32, Predicate<Int32>) | Determines whether a specified test is true for any integer within a range of integers. |
![]() ![]() | Exists<T>(IEnumerable<T>, Predicate<T>) | Determines whether an element within a collection of elements exists within a function. |
![]() ![]() | ForAll(Int32, Int32, Predicate<Int32>) | Determines whether a particular condition is valid for all integers in a specified range. |
![]() ![]() | ForAll<T>(IEnumerable<T>, Predicate<T>) | Determines whether all the elements in a collection exist within a function. |
![]() ![]() | Invariant(Boolean) | Specifies an invariant contract for the enclosing class. |
![]() ![]() | Invariant(Boolean, String) | Specifies an invariant contract for the enclosing class, and displays a message if the condition for the contract fails. |
![]() ![]() | OldValue<T> | Represents values as they were at the start of a method or property. |
![]() ![]() | Requires(Boolean) | Specifies a precondition contract for the enclosing method or property. |
![]() ![]() | Requires(Boolean, String) | Specifies a precondition contract for the enclosing method or property, and displays a message if the condition for the contract fails. |
![]() ![]() | Requires<TException>(Boolean) | Specifies a precondition contract for the enclosing method or property, and throws an exception if the condition for the contract fails. |
![]() ![]() | Requires<TException>(Boolean, String) | Specifies a precondition contract for the enclosing method or property, and throws an exception with the provided message if the condition for the contract fails. |
![]() ![]() | Result<T> | Represents the return value of a method or property. |
![]() ![]() | ValueAtReturn<T> | Represents the final (output) value of an out parameter when returning from a method. |
Code contract classes let you specify preconditions, postconditions, and object invariants in your code. Preconditions are requirements that must be met when entering a method or property. Postconditions describe expectations at the time the method or property code exits. Object invariants describe the expected state for a class that has no condition problems.
For tools and detailed instructions for using code contracts, see Code Contracts on the MSDN DevLabs Web site.
Important Note: |
|---|
You must use a binary rewriter to insert run-time enforcement of contracts. Otherwise, contracts such as the Contract::Ensures method can only be tested statically and will not throw exceptions during run time if a contract is violated. You can download the binary rewriter CCRewrite from Code Contracts on the MSDN DevLabs Web site. CCRewrite comes with a Visual Studio add-in that enables you to activate run-time contract enforcement from the project Properties page. The binary rewriter and the Visual Studio add-in do not ship with Visual Studio 2010 or the Windows SDK. |



Important Note: