代码合同无法证明elment存在于列表中

时间:2017-05-18 14:05:10

标签: c# .net code-contracts post-conditions

基本上,我想要一个元素添加到列表中,如果它尚不存在。具有一个后置条件似乎是合理的,该条件确保在方法完成后该元素存在于列表中。下面是一个最小的例子,它给了我错误" CodeContracts:确保未经证实:_numbers.Contains(n)"。任何想法为什么它不起作用或有没有办法重写代码使其工作?

class Test
{
    private List<int> _numbers = new List<int>();

    public void Add(int n)
    {
        Contract.Ensures(_numbers.Contains(n));
        if (!_numbers.Contains(n))
        {
            _numbers.Add(n);
        }
    }
    [ContractInvariantMethod]
    void ObjectInvariants()
    {
        Contract.Invariant(_numbers != null);
    }
}

0 个答案:

没有答案