共用方式為


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, String)

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

Assert(Boolean)

檢查條件;如果條件 false,請遵循為分析器設定的呈報原則。

Assume(Boolean, String)

指示程式代碼分析工具假設條件 true,即使無法靜態證明一律 true,並在假設失敗時顯示訊息。

Assume(Boolean)

指示程式代碼分析工具假設指定的條件是 true,即使無法靜態證明永遠 true

EndContractBlock()

當方法的合約只包含 if-then-throw 窗體中的前置條件時,標記合約區段的結尾。

Ensures(Boolean, String)

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

Ensures(Boolean)

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

EnsuresOnThrow<TException>(Boolean, String)

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

EnsuresOnThrow<TException>(Boolean)

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

Exists(Int32, Int32, Predicate<Int32>)

判斷指定之測試是否為 true,適用於整數範圍內的任何整數。

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

判斷專案集合內的專案是否存在於函式內。

ForAll(Int32, Int32, Predicate<Int32>)

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

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

判斷集合中的所有專案是否存在於函式內。

Invariant(Boolean, String)

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

Invariant(Boolean)

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

OldValue<T>(T)

表示值,因為它們是在方法或屬性的開頭。

Requires(Boolean, String)

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

Requires(Boolean)

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

Requires<TException>(Boolean, String)

指定封入方法或屬性的前置條件合約,如果合約的條件失敗,則會擲回具有所提供訊息的例外狀況。

Requires<TException>(Boolean)

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

Result<T>()

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

ValueAtReturn<T>(T)

表示從方法傳回時,out 參數的最終 (output) 值。

事件

ContractFailed

當合約失敗時發生。

適用於