【发布时间】:2012-05-22 11:50:10
【问题描述】:
我有这个简单的代码:
public ArrayStack(int capacity)
{
Contract.Requires(capacity >= 0);
Contract.Ensures(_items != null);
Contract.Ensures(_items.Length == capacity);
_items = new T[capacity];
_top = -1;
}
我预计一旦我键入以下内容,我会收到一个编译时警告,但我只从合约中得到一个运行时异常。
static void Main(string[] args)
{
int i = -1;
ArrayStack<string> stack = new ArrayStack<string>(i);
}
有什么想法吗?
已编辑:我的代码合约设置图片
【问题讨论】:
-
愚蠢的问题,但你真的在运行验证器吗? (你的设置是什么等?)
-
@JonSkeet - 当然我实际上标记了那里的所有内容:) 我正在获得运行时验证。设置中有什么需要特别注意的吗?
-
添加了设置页面图片
-
对我来说,使用默认合同设置的代码的最小测试版本会在后台检查完成后给出预期的错误...
标签: c# .net code-contracts