Contract::Invariant Method (Boolean, String^)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Specifies an invariant contract for the enclosing method or property, and displays a message if the condition for the contract fails.

Namespace:   System.Diagnostics.Contracts
Assembly:  mscorlib (in mscorlib.dll)

static void Invariant(
	bool condition,
	String^ userMessage


Type: System::Boolean

The conditional expression to test.

Type: System::String^

The message to display if the condition is false.

Invariant contracts are contained within a method that is identified by the ContractInvariantMethodAttribute attribute; typically, the method is named ObjectInvariant.

  • This contract can be specified only in a dedicated invariant method that is declared on a class.

  • This contract is not exposed to clients; therefore, it may reference members that are less visible than the enclosing method.

  • You must use the binary rewriter for run-time enforcement of this invariant.

  • Invariants are conditionally defined on the CONTRACTS FULL symbol. During run-time checking, invariants are checked at the end of each public method. If an invariant mentions a public method in the same class, the invariant check that would normally happen at the end of that public method is disabled and checked only at the end of the outermost method call to that class. This also happens if the class is re-entered because of a call to a method on another class.

Universal Windows Platform
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Available since 4.0
Windows Phone Silverlight
Available since 8.0
Windows Phone
Available since 8.1
Return to top