如何向CodeContracts证明while循环后的条件为真

时间:2012-06-27 14:23:32

标签: c# .net code-contracts

我正在尝试使用CodeContracts。我从一个小功能开始

public static string MyTrim(string text)
{
    Contract.Requires(text != null);
    Contract.Ensures(Contract.Result<string>().Length == 0 || Contract.Result<string>()[0] != ' ');
    var sCurrent = text;
    while (sCurrent.Length != 0 && sCurrent[0] == ' ')
    {
        sCurrent = sCurrent.Substring(1);
    }
    return sCurrent;
}

Code Contracts对我说,我没有证明确保。但在while循环之后,我知道条件是错误的。所以我知道

Scurrent.Length == 0 || Scurrent[0] != ' '

这正是我确保的条件。我该怎么做才能向Code COntracts解释呢?

1 个答案:

答案 0 :(得分:0)

我已经研究了你的例子中发生了什么,由于析取循环条件,它只是静态检查器的限制。我们会尝试解决这个问题。