Contract.Ensures メソッド

定義

外側のメソッドまたはプロパティの実行後の状態のコントラクトを指定します。Specifies a postcondition contract for the enclosing method or property.

オーバーロード

Ensures(Boolean)

外側のメソッドまたはプロパティの実行後の状態のコントラクトを指定します。Specifies a postcondition contract for the enclosing method or property.

Ensures(Boolean, String)

指定された終了条件の実行後の状態のコントラクトと、条件が false の場合に表示するメッセージを指定します。Specifies a postcondition contract for a provided exit condition and a message to display if the condition is false.

Ensures(Boolean)

外側のメソッドまたはプロパティの実行後の状態のコントラクトを指定します。Specifies a postcondition contract for the enclosing method or property.

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

パラメーター

condition
Boolean

テストする条件式。The conditional expression to test. 式には OldValue<T>(T)ValueAtReturn<T>(T)、および Result<T>() の各値を使用できます。The expression may include OldValue<T>(T), ValueAtReturn<T>(T), and Result<T>() values.

属性

次の例は、Ensures メソッドを使用して、予期される値が返されることを確認する方法を示しています。The following example shows how to use the Ensures method to ensure that an expected value is returned. このコード例は、ContractClassAttribute クラス用に用意されている大規模な例の一部です。This code example is part of a larger example provided for the ContractClassAttribute class.

int IArray.Add(Object value)
{
    // Returns the index in which an item was inserted.
    Contract.Ensures(Contract.Result<int>() >= -1);
    Contract.Ensures(Contract.Result<int>() < ((IArray)this).Count);
    return default(int);
}
Function Add(ByVal value As Object) As Integer Implements IArray.Add
    ' Returns the index in which an item was inserted.
    Contract.Ensures(Contract.Result(Of Integer)() >= -1) '
    Contract.Ensures(Contract.Result(Of Integer)() < CType(Me, IArray).Count) '
    Return 0
    
End Function 'IArray.Add

注釈

condition パラメーターは、外側のメソッドまたはプロパティが正常に返されたときに true されると想定される事後条件を指定します。The condition parameter specifies a postcondition that is expected to be true when the enclosing method or property returns normally.

  • このメソッドの呼び出しは、他のコードの前にあるメソッドまたはプロパティの先頭にある必要があります。This method call must be at the beginning of a method or property, before any other code.

  • この事後条件の実行時の適用には、バイナリリライター (Visual Studio Marketplace のコードコントラクトで利用可能) を使用する必要があります。You must use the binary rewriter (available at Code Contracts on the Visual Studio Marketplace) for run-time enforcement of this postcondition.

Ensures(Boolean, String)

指定された終了条件の実行後の状態のコントラクトと、条件が false の場合に表示するメッセージを指定します。Specifies a postcondition contract for a provided exit condition and a message to display if the condition is false.

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

パラメーター

condition
Boolean

テストする条件式。The conditional expression to test. 式には OldValue<T>(T) および Result<T>() の各値を使用できます。The expression may include OldValue<T>(T) and Result<T>() values.

userMessage
String

式が true でない場合に表示するメッセージ。The message to display if the expression is not true.

属性

注釈

condition パラメーターは、外側のメソッドまたはプロパティが正常に返されたときに true されると想定される事後条件を指定します。The condition parameter specifies a postcondition that is expected to be true when the enclosing method or property returns normally.

  • このメソッドの呼び出しは、他のコードの前にあるメソッドまたはプロパティの先頭にある必要があります。This method call must be at the beginning of a method or property, before any other code.

  • このコントラクトはクライアントに公開されます。したがって、少なくとも外側のメソッドとして表示されるメンバーのみを参照する必要があります。This contract is exposed to clients; therefore, it must only reference members that are at least as visible as the enclosing method.

  • この事後条件の実行時の適用には、バイナリリライター (Visual Studio Marketplace のコードコントラクトで利用可能) を使用する必要があります。You must use the binary rewriter (available at Code Contracts on the Visual Studio Marketplace) for run-time enforcement of this postcondition.

  • userMessage が定数文字列リテラルでない場合は、ツールによってコントラクトが認識されない可能性があります。If userMessage is not a constant string literal, the contract may not be understood by tools.

適用対象