Freigeben über


Contract.Invariant Methode

Definition

Gibt einen Vertrag für eine einschließende Methode oder Eigenschaft an.

Überlädt

Invariant(Boolean)

Gibt einen invarianten Vertrag für die einschließende Methode oder Eigenschaft an.

Invariant(Boolean, String)

Gibt einen invarianten Vertrag für die einschließende Methode oder Eigenschaft an und zeigt eine Meldung an, wenn die Bedingung für den Vertrag nicht erfüllt wird.

Invariant(Boolean)

Quelle:
Contracts.cs
Quelle:
Contracts.cs
Quelle:
Contracts.cs

Gibt einen invarianten Vertrag für die einschließende Methode oder Eigenschaft an.

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)

Parameter

condition
Boolean

Der bedingte Ausdruck, der getestet werden soll.

Attribute

Hinweise

Invariant contracts sind in einer Methode enthalten, die durch das -Attribut identifiziert wird. In der ContractInvariantMethodAttribute Regel heißt ObjectInvariantdie Methode .

  • Dieser Vertrag kann nur in einer dedizierten invariante Methode angegeben werden, die für eine Klasse deklariert wird. Wenn die Methode nicht versiegelt ist, sollte sie sich nur auf geschützte Member und nicht auf private Member beziehen, damit Unterklassen sicher sein können, dass sie die Invarianten beibehalten.

  • Dieser Vertrag ist für Clients nicht verfügbar gemacht. Daher kann er auf Elemente verweisen, die weniger sichtbar sind als die einschließende Methode.

  • Sie müssen den binären Rewriter für die Laufzeiterzwingung dieser Invariante verwenden.

  • Invarianten werden bedingt basierend auf dem Vorhandensein des CONTRACTS FULL Symbols definiert. Bei der Laufzeitüberprüfung werden die Invarianten am Ende jeder öffentlichen Methode überprüft. Wenn eine invariante Methode eine öffentliche Methode in derselben Klasse erwähnt, wird die invariante Überprüfung, die normalerweise am Ende dieser öffentlichen Methode durchgeführt wird, deaktiviert und nur am Ende des äußersten Methodenaufrufs dieser Klasse überprüft. Dies geschieht auch, wenn die Klasse wegen eines Aufrufs einer Methode in einer anderen Klasse erneut eingegeben wird.

Gilt für:

Invariant(Boolean, String)

Quelle:
Contracts.cs
Quelle:
Contracts.cs
Quelle:
Contracts.cs

Gibt einen invarianten Vertrag für die einschließende Methode oder Eigenschaft an und zeigt eine Meldung an, wenn die Bedingung für den Vertrag nicht erfüllt wird.

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)

Parameter

condition
Boolean

Der bedingte Ausdruck, der getestet werden soll.

userMessage
String

Die Meldung, die angezeigt werden soll, wenn die Bedingung false lautet.

Attribute

Hinweise

Invariant contracts sind in einer Methode enthalten, die durch das -Attribut identifiziert wird. In der ContractInvariantMethodAttribute Regel heißt ObjectInvariantdie Methode .

  • Dieser Vertrag kann nur in einer dedizierten invariante Methode angegeben werden, die für eine Klasse deklariert wird.

  • Dieser Vertrag ist für Clients nicht verfügbar gemacht. Daher kann er auf Elemente verweisen, die weniger sichtbar sind als die einschließende Methode.

  • Sie müssen den binären Rewriter für die Laufzeiterzwingung dieser Invariante verwenden.

  • Invarianten werden bedingt für das CONTRACTS FULL Symbol definiert. Bei der Laufzeitüberprüfung werden die Invarianten am Ende jeder öffentlichen Methode überprüft. Wenn eine invariante Methode eine öffentliche Methode in derselben Klasse erwähnt, wird die invariante Überprüfung, die normalerweise am Ende dieser öffentlichen Methode durchgeführt wird, deaktiviert und nur am Ende des äußersten Methodenaufrufs dieser Klasse überprüft. Dies geschieht auch, wenn die Klasse wegen eines Aufrufs einer Methode in einer anderen Klasse erneut eingegeben wird.

Gilt für: