Udostępnij za pośrednictwem


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 nie powiedzie się.

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 ma nazwę ObjectInvariant.

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

  • Ten kontrakt nie jest udostępniany klientom; w związku z tym może odwoływać się do elementów członkowskich, które są mniej widoczne niż metoda otaczania.

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

  • Niezmienności są definiowane warunkowo na podstawie obecności symbolu CONTRACTS FULL . Podczas sprawdzania czasu wykonywania zmienne 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 miało miejsce 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 nie powiedzie się.

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 ma nazwę ObjectInvariant.

  • Ten kontrakt można określić tylko w dedykowanej niezmiennej metodzie, która jest zadeklarowana w klasie.

  • Ten kontrakt nie jest udostępniany klientom; w związku z tym może odwoływać się do elementów członkowskich, które są mniej widoczne niż metoda otaczania.

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

  • Zmienne są definiowane warunkowo na symbolu CONTRACTS FULL . Podczas sprawdzania czasu wykonywania zmienne 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 miało miejsce 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