Contract.Invariant Contract.Invariant Contract.Invariant Contract.Invariant Method

Definição

Especifica um contrato para um método ou uma propriedade delimitadora.Specifies a contract for an enclosing method or property.

Sobrecargas

Invariant(Boolean) Invariant(Boolean) Invariant(Boolean) Invariant(Boolean)

Especifica um contrato invariável para o método ou a propriedade delimitadora.Specifies an invariant contract for the enclosing method or property.

Invariant(Boolean, String) Invariant(Boolean, String) Invariant(Boolean, String) Invariant(Boolean, String)

Especifica um contrato invariável para a propriedade ou o método delimitador e exibe uma mensagem se a condição para o contrato falhar.Specifies an invariant contract for the enclosing method or property, and displays a message if the condition for the contract fails.

Invariant(Boolean) Invariant(Boolean) Invariant(Boolean) Invariant(Boolean)

Especifica um contrato invariável para o método ou a propriedade delimitadora.Specifies an invariant contract for the enclosing method or property.

public:
 static void Invariant(bool condition);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition);
static member Invariant : bool -> unit
Public Shared Sub Invariant (condition As Boolean)

Parâmetros

condition
Boolean Boolean Boolean Boolean

A expressão condicional a ser testada.The conditional expression to test.

Comentários

Invariantos contratos estão contidos em um método que é identificado pelo ContractInvariantMethodAttribute atributo; normalmente, o método é nomeado ObjectInvariant.Invariant contracts are contained within a method that is identified by the ContractInvariantMethodAttribute attribute; typically, the method is named ObjectInvariant.

  • Este contrato pode ser especificado somente em um método invariável dedicado declarado em uma classe.This contract can be specified only in a dedicated invariant method that is declared on a class. Se o método não estiver lacrado, ele deverá se referir somente a membros protegidos, não a membros privados, para que as subclasses possam ter certeza de manter as invariáveis.If the method is not sealed, it should refer only to protected members, not private members, so that subclasses can be sure to maintain the invariants.

  • Este contrato não é exposto aos clientes; Portanto, ele pode fazer referência a membros que são menos visíveis do que o método delimitador.This contract is not exposed to clients; therefore, it may reference members that are less visible than the enclosing method.

  • Você deve usar o regravador binário para imposição de tempo de execução dessa invariável.You must use the binary rewriter for run-time enforcement of this invariant.

  • As invariáveis são definidas condicionalmente com base na presença do CONTRACTS FULL símbolo.Invariants are conditionally defined based on the presence of the CONTRACTS FULL symbol. Durante a verificação em tempo de execução, as invariáveis são verificadas ao final de cada método público.During run-time checking, invariants are checked at the end of each public method. Se uma invariável mencionar um método público na mesma classe, a verificação invariável que normalmente aconteceria no final desse método público será desabilitada e verificada apenas no final da chamada de método mais externa para essa classe.If an invariant mentions a public method in the same class, the invariant check that would normally happen at the end of that public method is disabled and checked only at the end of the outermost method call to that class. Isso também ocorrerá se a classe for inserida novamente devido a uma chamada a um método em outra classe.This also happens if the class is re-entered because of a call to a method on another class.

Invariant(Boolean, String) Invariant(Boolean, String) Invariant(Boolean, String) Invariant(Boolean, String)

Especifica um contrato invariável para a propriedade ou o método delimitador e exibe uma mensagem se a condição para o contrato falhar.Specifies an invariant contract for the enclosing method or property, and displays a message if the condition for the contract fails.

public:
 static void Invariant(bool condition, System::String ^ userMessage);
[System.Diagnostics.Conditional("CONTRACTS_FULL")]
public static void Invariant (bool condition, string userMessage);
static member Invariant : bool * string -> unit
Public Shared Sub Invariant (condition As Boolean, userMessage As String)

Parâmetros

condition
Boolean Boolean Boolean Boolean

A expressão condicional a ser testada.The conditional expression to test.

userMessage
String String String String

A mensagem a ser exibida se a condição for false.The message to display if the condition is false.

Comentários

Invariantos contratos estão contidos em um método que é identificado pelo ContractInvariantMethodAttribute atributo; normalmente, o método é nomeado ObjectInvariant.Invariant contracts are contained within a method that is identified by the ContractInvariantMethodAttribute attribute; typically, the method is named ObjectInvariant.

  • Este contrato pode ser especificado somente em um método invariável dedicado declarado em uma classe.This contract can be specified only in a dedicated invariant method that is declared on a class.

  • Este contrato não é exposto aos clientes; Portanto, ele pode fazer referência a membros que são menos visíveis do que o método delimitador.This contract is not exposed to clients; therefore, it may reference members that are less visible than the enclosing method.

  • Você deve usar o regravador binário para imposição de tempo de execução dessa invariável.You must use the binary rewriter for run-time enforcement of this invariant.

  • As CONTRACTS FULL invariáveis são definidas condicionalmente no símbolo.Invariants are conditionally defined on the CONTRACTS FULL symbol. Durante a verificação em tempo de execução, as invariáveis são verificadas ao final de cada método público.During run-time checking, invariants are checked at the end of each public method. Se uma invariável mencionar um método público na mesma classe, a verificação invariável que normalmente aconteceria no final desse método público será desabilitada e verificada apenas no final da chamada de método mais externa para essa classe.If an invariant mentions a public method in the same class, the invariant check that would normally happen at the end of that public method is disabled and checked only at the end of the outermost method call to that class. Isso também ocorrerá se a classe for inserida novamente devido a uma chamada a um método em outra classe.This also happens if the class is re-entered because of a call to a method on another class.

Aplica-se a