Contract.Invariant メソッド

定義

外側のメソッドまたはプロパティのコントラクトを指定します。

オーバーロード

名前 説明
Invariant(Boolean)

外側のメソッドまたはプロパティの不変コントラクトを指定します。

Invariant(Boolean, String)

外側のメソッドまたはプロパティの不変コントラクトを指定し、コントラクトの条件が失敗した場合にメッセージを表示します。

Invariant(Boolean)

外側のメソッドまたはプロパティの不変コントラクトを指定します。

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

パラメーター

condition
Boolean

テストする条件式。

属性

注釈

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

  • このコントラクトは、クラスで宣言されている専用の不変メソッドでのみ指定できます。 メソッドがシールされていない場合は、サブクラスがインバリアントを維持できるように、プライベート メンバーではなく、保護されたメンバーのみを参照する必要があります。

  • このコントラクトはクライアントに公開されません。したがって、外側のメソッドよりも見えにくいメンバーを参照する可能性があります。

  • このインバリアントの実行時の適用には、バイナリ リライターを使用する必要があります。

  • インバリアントは、 CONTRACTS FULL シンボルの存在に基づいて条件付きで定義されます。 実行時のチェック中に、インバリアントは各パブリック メソッドの末尾でチェックされます。 インバリアントが同じクラス内のパブリック メソッドに言及した場合、そのパブリック メソッドの最後に通常発生するインバリアント チェックは無効になり、そのクラスに対する最も外側のメソッド呼び出しの最後でのみチェックされます。 これは、別のクラスのメソッドの呼び出しが原因でクラスが再入力された場合にも発生します。

適用対象

Invariant(Boolean, String)

外側のメソッドまたはプロパティの不変コントラクトを指定し、コントラクトの条件が失敗した場合にメッセージを表示します。

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

パラメーター

condition
Boolean

テストする条件式。

userMessage
String

条件が false場合に表示するメッセージ。

属性

注釈

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

  • このコントラクトは、クラスで宣言されている専用の不変メソッドでのみ指定できます。

  • このコントラクトはクライアントに公開されません。したがって、外側のメソッドよりも見えにくいメンバーを参照する可能性があります。

  • このインバリアントの実行時の適用には、バイナリ リライターを使用する必要があります。

  • インバリアントは、 CONTRACTS FULL シンボルで条件付きで定義されます。 実行時のチェック中に、インバリアントは各パブリック メソッドの末尾でチェックされます。 インバリアントが同じクラス内のパブリック メソッドに言及した場合、そのパブリック メソッドの最後に通常発生するインバリアント チェックは無効になり、そのクラスに対する最も外側のメソッド呼び出しの最後でのみチェックされます。 これは、別のクラスのメソッドの呼び出しが原因でクラスが再入力された場合にも発生します。

適用対象