C# 代码合同警告未显示
我有一个简单的代码:C# 代码合同警告未显示,c#,.net,code-contracts,C#,.net,Code Contracts,我有一个简单的代码: public ArrayStack(int capacity) { Contract.Requires(capacity >= 0); Contract.Ensures(_items != null); Contract.Ensures(_items.Length == capacity); _items = new T[capacity]; _top = -1; } 我
public ArrayStack(int capacity)
{
Contract.Requires(capacity >= 0);
Contract.Ensures(_items != null);
Contract.Ensures(_items.Length == capacity);
_items = new T[capacity];
_top = -1;
}
我希望一旦我输入followig,我会得到一个编译时警告,但我只从契约中得到一个运行时异常
static void Main(string[] args)
{
int i = -1;
ArrayStack<string> stack = new ArrayStack<string>(i);
}
static void Main(字符串[]args)
{
int i=-1;
ArrayStack堆栈=新的ArrayStack(i);
}
有什么想法吗
已编辑:我的代码合同设置的图片
如果您想获得曲线,则必须选中“显示曲线”: 重新构建项目,等待静态分析完成,您将在“输出”窗口中看到警告(如果您没有运行VS的“最终”版本,这些警告很容易丢失)和可疑代码下的行 [编辑]顺便说一下,我总是使用“标准合同要求”装配模式运行 然后在示例构建之后: 在IDE中: 把它弄明白了 似乎编译器太聪明了,在最后一行之后没有人使用堆栈,所以他没有检查堆栈 一旦我添加stack.push(…)它就会给我错误
不能让计算机太聪明…愚蠢的问题,但你真的在运行验证器吗?(你的设置是什么,等等?@JonSkeet-当然,我实际上在那里标记了所有内容:)我正在获得运行时验证。在设置中有什么我应该特别注意的吗?添加了设置页面ImageForMe,您的代码的最小测试版本带有默认的合同设置,一旦背景检查完成,就会出现预期的错误。。。