Contract.Invariant メソッド

定義

外側のメソッドまたはプロパティのコントラクトを指定します。Specifies a contract for an enclosing method or property.

オーバーロード

Invariant(Boolean)

外側のメソッドまたはプロパティの不変コントラクトを指定します。Specifies an invariant contract for the enclosing method or property.

Invariant(Boolean, String)

外側のメソッドまたはプロパティの不変コントラクトを指定し、コントラクトの条件が失敗した場合はメッセージを表示します。Specifies an invariant contract for the enclosing method or property, and displays a message if the condition for the contract fails.

Invariant(Boolean)

外側のメソッドまたはプロパティの不変コントラクトを指定します。Specifies an invariant contract for the enclosing method or property.

public:
 static void Invariant(bool condition);
public static void Invariant (bool condition);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition);
static member Invariant : bool -> unit
[<System.Diagnostics.Conditional("CONTRACTS_FULL")>]
static member Invariant : bool -> unit
Public Shared Sub Invariant (condition As Boolean)

パラメーター

condition
Boolean

テストする条件式。The conditional expression to test.

属性

注釈

Invariant コントラクトは、属性によって識別されるメソッド内に含まれます。 ContractInvariantMethodAttribute 通常、メソッドにはという名前が付けられ ObjectInvariant ます。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. メソッドがシールされていない場合は、サブクラスが不変性を維持できるように、プライベートメンバーではなくプロテクトメンバーだけを参照する必要があります。If the method is not sealed, it should refer only to protected members, not private members, so that subclasses can be sure to maintain the invariants.

  • このコントラクトはクライアントに公開されません。そのため、外側のメソッドよりも見えにくくなっているメンバーを参照する場合があります。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.

  • インバリアントは、シンボルの存在に基づいて条件付きで定義され CONTRACTS FULL ます。Invariants are conditionally defined based on the presence of 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.

適用対象

Invariant(Boolean, String)

外側のメソッドまたはプロパティの不変コントラクトを指定し、コントラクトの条件が失敗した場合はメッセージを表示します。Specifies an invariant contract for the enclosing method or property, and displays a message if the condition for the contract fails.

public:
 static void Invariant(bool condition, System::String ^ userMessage);
public static void Invariant (bool condition, string userMessage);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition, string userMessage);
static member Invariant : bool * string -> unit
[<System.Diagnostics.Conditional("CONTRACTS_FULL")>]
static member Invariant : bool * string -> unit
Public Shared Sub Invariant (condition As Boolean, userMessage As String)

パラメーター

condition
Boolean

テストする条件式。The conditional expression to test.

userMessage
String

条件が false の場合に表示するメッセージ。The message to display if the condition is false.

属性

注釈

Invariant コントラクトは、属性によって識別されるメソッド内に含まれます。 ContractInvariantMethodAttribute 通常、メソッドにはという名前が付けられ ObjectInvariant ます。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.

  • インバリアントは、シンボルで条件付きで定義され CONTRACTS FULL ます。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.

適用対象