Contract 類別

定義

包含表示程式合約的靜態方法,例如前置條件、後置條件及物件非變異。

public ref class Contract abstract sealed
public static class Contract
type Contract = class
Public Class Contract
繼承
Contract

備註

程式代碼合約類別可讓您在程式代碼中指定前置條件、後置條件和物件不變量。 前置條件是輸入方法或屬性時,必須符合的需求。 後置條件描述在方法或屬性程式碼結束時的期望。 物件不變量描述沒有條件問題的類別的預期狀態。 如需前置條件、後置條件和物件不變量的詳細資訊,請參閱 程式碼合約

如需使用程式代碼合約的工具和詳細指示,請參閱Visual Studio Marketplace 上的 程式碼合約

重要

您必須使用二進位重寫器來插入合約的運行時間強制執行。 否則,如果違反合約,方法之類的 Contract.Ensures 合約只能以靜態方式測試,而且不會在運行時間擲回例外狀況。 您可以從 Visual Studio Marketplace 上的 程式代碼合約 下載二進位重寫器 CCRewrite。 CCRewrite 隨附 Visual Studio 載入宏,可讓您從專案 [ 屬性 ] 頁面啟用運行時間合約強制執行。 二進位重寫器和 Visual Studio 載入宏不會隨附於 Visual Studio 2010 或 Windows SDK。

方法

Assert(Boolean)

檢查條件,且如果條件為 false,則遵循已為分析器設定的擴大原則。

Assert(Boolean, String)

檢查條件。如果條件為 false,則遵循分析器所設定的擴大原則,並顯示指定的訊息。

Assume(Boolean)

指示程式碼分析工具假設指定的條件為 true,即使該條件無法以靜態方式證明永遠是 true 亦然。

Assume(Boolean, String)

指示程式碼分析工具假設條件為 true,即使該條件無法以靜態方式證明永遠是 true 亦然,同時在假設失敗時顯示訊息。

EndContractBlock()

當方法的合約僅包含 if-then-throw 形式的前置條件時,標記合約區段的結尾。

Ensures(Boolean)

指定封入方法或屬性的後置條件合約。

Ensures(Boolean, String)

指定提供之結束條件的後置條件合約,以及在條件為 false 時所要顯示的訊息。

EnsuresOnThrow<TException>(Boolean)

根據所提供的例外狀況和條件,針對封入方法或屬性指定後置條件合約。

EnsuresOnThrow<TException>(Boolean, String)

針對封入方法或屬性來指定後置條件合約,和當條件是 false 時,根據所提供之例外狀況和條件來顯示的訊息。

Exists(Int32, Int32, Predicate<Int32>)

判斷整數範圍內是否有任何整數使指定的測試成立。

Exists<T>(IEnumerable<T>, Predicate<T>)

判斷項目集合內的項目是否出現在函式中。

ForAll(Int32, Int32, Predicate<Int32>)

判斷特定條件對於指定之範圍內的所有整數是否有效。

ForAll<T>(IEnumerable<T>, Predicate<T>)

判斷集合內的所有項目是否都出現在函式中。

Invariant(Boolean)

指定封入方法或屬性的非變異合約。

Invariant(Boolean, String)

指定封入方法或屬性的非變異合約,並在合約的條件失敗時顯示訊息。

OldValue<T>(T)

表示其在方法或屬性開始時的值。

Requires(Boolean)

指定封入方法或屬性的前置條件合約。

Requires(Boolean, String)

指定封入方法或屬性的前置條件合約,並在合約的條件失敗時顯示訊息。

Requires<TException>(Boolean)

指定封入方法或屬性的前置條件合約,並在合約的條件失敗時擲回例外狀況。

Requires<TException>(Boolean, String)

指定封入方法或屬性的前置條件合約,並在合約的條件失敗時擲回包含所提供訊息的例外狀況。

Result<T>()

表示方法或屬性的傳回值。

ValueAtReturn<T>(T)

表示從方法傳回時的最後 (輸出) out 參數值。

事件

ContractFailed

發生於合約失敗時。

適用於