我有以下方法:
static bool TextEquals(string text, char[] array, int start, int length)
{
Contract.Requires(text != null);
Contract.Requires(text.Length != length
|| text.Length == 0
|| (array != null && start >= 0 && start < array.Length));
if (text.Length != length)
{
return false;
}
for (var i = 0; i < text.Length; ++i)
{
if (text[i] != array[start + i])
{
return false;
}
}
return true;
}
但是,代码合同建议我添加以下内容:
Contracts.Requires(text.Length == 0 || array != null || start < array.Length);
Contracts.Requires(text.Length == 0 || start < 0 || start < array.Length);
我没有看到这两个附加要求的额外好处。已经存在的需求没有涵盖哪些路径?
特别是,我没有看到array == null && start < array.Length
第一个建议允许的情况。
有什么办法可以删除这些建议?