我有一些具有以下逻辑的代码:
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
理论上,总有一个元素是什么,所以这种方法应该没有问题。无论如何,为了确定,我在方法的末尾添加了一个断言:
//pseudo-code
foreach (element in elementList) {
if (element is whatever)
return element;
}
}
Contract.Assert(false, "Invalid state!");
问题是这个方法必须返回一些东西,编译器不明白断言会破坏程序的执行。在使用 Contracts 之前,在这种情况下,我曾经抛出一个异常,从而解决了问题。你将如何使用 Contract.Assert() 处理这个问题?在 Contract.Assert() 调用之后返回 null 或 default(element_type) 知道它永远不会被调用并关闭编译器?或者还有其他更优雅的方法吗?
谢谢