我正在尝试使用 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 对我说我没有证明 Ensures。但是在while循环之后,我知道条件是错误的。所以我知道
Scurrent.Length == 0 || Scurrent[0] != ' '
这正是我的保证条件。我能做些什么来向代码合同解释这一点?