Share via


Contract.Invariant メソッド

定義

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

オーバーロード

Invariant(Boolean)

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

Invariant(Boolean, String)

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

Invariant(Boolean)

ソース:
Contracts.cs
ソース:
Contracts.cs
ソース:
Contracts.cs

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

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)

ソース:
Contracts.cs
ソース:
Contracts.cs
ソース:
Contracts.cs

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

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")]
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 条件付きで定義されます。 ランタイム チェックで各パブリック メソッドの最後にチェックされます。 インバリアントが同じクラス内のパブリック メソッドに言及した場合、そのパブリック メソッドの最後で通常発生するインバリアント チェックは無効になり、そのクラスに対する最も外側のメソッド呼び出しの最後でのみチェックされます。 別のクラスのメソッドの呼び出しのためにクラスへの再入がなされる場合も同様です。

適用対象