Contract.Invariant Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla