我玩弄代码合同,有一个简单的方法,将各字符间的空格字符给定数。
如
Hello -> H e l l o
World -> W o r l d
该方法InsertSpaceBetweenLetters是一个类,提供了一些字符串属性S,应该修改后返回的字符串中实现。 下面的代码
public string InsertSpaceBetweenLetters(int spaceWidth)
{
Contract.Requires(spaceWidth > 0);
Contract.Requires(S.Length > 0);
Contract.Ensures(Contract.Result<string>() != null);
Contract.Ensures(Contract.Result<string>().Length == S.Length + (S.Length - 1) * spaceWidth);
string result = String.Empty;
Contract.Assume(S.Length >= 0);
for(int i = 0; i < S.Length; i++)
{
result += S[i];
if (i < S.Length - 1)
result += new String(' ', spaceWidth);
}
return result;
}
静态检查给了我下面的警告:
ensures unproven: Contract.Result<string>().Length == S.Length + (S.Length - 1) * spaceWidth
我以为可以摆脱这种警告与循环之前我做的假设:
Contract.Assume(S.Length >= 0);
但警告仍然存在。 哪些假设必须作出摆脱的警告?
先感谢您。