Contract.Invariant Metoda

Definicja

Określa kontrakt dla otaczającej metody lub właściwości.

Przeciążenia

Invariant(Boolean)

Określa niezmienny kontrakt dla otaczającej metody lub właściwości.

Invariant(Boolean, String)

Określa niezmienny kontrakt dla otaczającej metody lub właściwości i wyświetla komunikat, jeśli warunek kontraktu zakończy się niepowodzeniem.

Invariant(Boolean)

Źródło:
Contracts.cs
Źródło:
Contracts.cs
Źródło:
Contracts.cs

Określa niezmienny kontrakt dla otaczającej metody lub właściwości.

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)

Parametry

condition
Boolean

Wyrażenie warunkowe do przetestowania.

Atrybuty

Uwagi

Invariant kontrakty są zawarte w metodzie, która jest identyfikowana przez ContractInvariantMethodAttribute atrybut; zazwyczaj metoda nosi nazwę ObjectInvariant.

  • Ten kontrakt można określić tylko w dedykowanej niezmiennej metodzie zadeklarowanej w klasie. Jeśli metoda nie jest zapieczętowana, powinna odwoływać się tylko do chronionych elementów członkowskich, a nie prywatnych składowych, aby podklasy mogły zachować niezmienność.

  • Ta umowa nie jest uwidoczniona dla klientów; w związku z tym może odwoływać się do elementów członkowskich, które są mniej widoczne niż metoda otaczania.

  • Musisz użyć binarnego ponownego tworzenia w celu wymuszania w czasie wykonywania tego niezmiennego.

  • Niezmienności są definiowane warunkowo na podstawie obecności symbolu CONTRACTS FULL . Podczas sprawdzania czasu wykonywania niezmienne elementy są sprawdzane na końcu każdej metody publicznej. Jeśli niezmienna metoda publiczna jest wymieniona w tej samej klasie, niezmienne sprawdzenie, które zwykle odbywałoby się na końcu tej metody publicznej, jest wyłączone i sprawdzane tylko na końcu najbardziej zewnętrznego wywołania metody do tej klasy. Dzieje się tak również w przypadku ponownego wprowadzenia klasy z powodu wywołania metody w innej klasie.

Dotyczy

Invariant(Boolean, String)

Źródło:
Contracts.cs
Źródło:
Contracts.cs
Źródło:
Contracts.cs

Określa niezmienny kontrakt dla otaczającej metody lub właściwości i wyświetla komunikat, jeśli warunek kontraktu zakończy się niepowodzeniem.

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)

Parametry

condition
Boolean

Wyrażenie warunkowe do przetestowania.

userMessage
String

Komunikat do wyświetlenia, jeśli warunek to false.

Atrybuty

Uwagi

Invariant kontrakty są zawarte w metodzie, która jest identyfikowana przez ContractInvariantMethodAttribute atrybut; zazwyczaj metoda nosi nazwę ObjectInvariant.

  • Ten kontrakt można określić tylko w dedykowanej niezmiennej metodzie zadeklarowanej w klasie.

  • Ta umowa nie jest uwidoczniona dla klientów; w związku z tym może odwoływać się do elementów członkowskich, które są mniej widoczne niż metoda otaczania.

  • Musisz użyć binarnego ponownego tworzenia w celu wymuszania w czasie wykonywania tego niezmiennego.

  • Niezmienne są warunkowo zdefiniowane na symbolu CONTRACTS FULL . Podczas sprawdzania czasu wykonywania niezmienne elementy są sprawdzane na końcu każdej metody publicznej. Jeśli niezmienna metoda publiczna jest wymieniona w tej samej klasie, niezmienne sprawdzenie, które zwykle odbywałoby się na końcu tej metody publicznej, jest wyłączone i sprawdzane tylko na końcu najbardziej zewnętrznego wywołania metody do tej klasy. Dzieje się tak również w przypadku ponownego wprowadzenia klasy z powodu wywołania metody w innej klasie.

Dotyczy