Condividi tramite


Contract.Invariant Metodo

Definizione

Specifica un contratto per un metodo o una proprietà contenitore.

Overload

Invariant(Boolean)

Specifica un contratto invariante per il metodo o la proprietà contenitore.

Invariant(Boolean, String)

Specifica un contratto invariante per la proprietà o il metodo contenitore e visualizza un messaggio se la condizione per il contratto ha esito negativo.

Invariant(Boolean)

Origine:
Contracts.cs
Origine:
Contracts.cs
Origine:
Contracts.cs

Specifica un contratto invariante per il metodo o la proprietà contenitore.

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)

Parametri

condition
Boolean

Espressione condizionale da sottoporre a test.

Attributi

Commenti

Invariant i contratti sono contenuti all'interno di un metodo identificato dall'attributo ContractInvariantMethodAttribute . In genere, il metodo è denominato ObjectInvariant.

  • Questo contratto può essere specificato solo in un metodo invariante dedicato dichiarato in una classe. Se il metodo non è bloccato, deve fare riferimento solo ai membri protetti, non ai membri privati, in modo che le sottoclassi possano essere sicure di mantenere gli invarianti.

  • Questo contratto non è esposto ai client; pertanto, può fare riferimento ai membri meno visibili del metodo di inclusione.

  • È necessario usare il rewriter binario per l'imposizione in fase di esecuzione di questo oggetto invariante.

  • Gli invarianti vengono definiti in modo condizionale in base alla presenza del CONTRACTS FULL simbolo. Durante il controllo in fase di esecuzione, le invarianti vengono controllate alla fine di ogni metodo pubblico. Se un invariante indica un metodo pubblico nella stessa classe, il controllo invariante che normalmente si verifica alla fine di tale metodo pubblico è disabilitato e controllato solo alla fine della chiamata del metodo più esterno a tale classe. Ciò avviene anche se la classe viene immessa di nuovo a causa di una chiamata a un metodo in un'altra classe.

Si applica a

Invariant(Boolean, String)

Origine:
Contracts.cs
Origine:
Contracts.cs
Origine:
Contracts.cs

Specifica un contratto invariante per la proprietà o il metodo contenitore e visualizza un messaggio se la condizione per il contratto ha esito negativo.

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)

Parametri

condition
Boolean

Espressione condizionale da sottoporre a test.

userMessage
String

Messaggio da visualizzare se la condizione è false.

Attributi

Commenti

Invariant i contratti sono contenuti all'interno di un metodo identificato dall'attributo ContractInvariantMethodAttribute . In genere, il metodo è denominato ObjectInvariant.

  • Questo contratto può essere specificato solo in un metodo invariante dedicato dichiarato in una classe.

  • Questo contratto non è esposto ai client; pertanto, può fare riferimento ai membri meno visibili del metodo di inclusione.

  • È necessario usare il rewriter binario per l'imposizione in fase di esecuzione di questo oggetto invariante.

  • Gli invarianti sono definiti in modo condizionale sul CONTRACTS FULL simbolo. Durante il controllo in fase di esecuzione, le invarianti vengono controllate alla fine di ogni metodo pubblico. Se un invariante indica un metodo pubblico nella stessa classe, il controllo invariante che normalmente si verifica alla fine di tale metodo pubblico è disabilitato e controllato solo alla fine della chiamata del metodo più esterno a tale classe. Ciò avviene anche se la classe viene immessa di nuovo a causa di una chiamata a un metodo in un'altra classe.

Si applica a