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 市场上 的代码协定 下载二进制重写程序 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>)

确定指定的测试对某个整数范围中的任何整数是否都为 true。

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

协定失败时发生。

适用于