我有一些代码有以下逻辑:使用Contract.Assert(true)时该怎么办,该方法必须返回什么?
//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!");
的问题是,由于此方法返回的东西,和编译器不明白断言会破坏程序的执行。在使用合同之前,在这种情况下,我曾经抛出异常,解决了这个问题。你如何处理这与Contract.Assert()?在Contract.Assert()调用后返回null或default(element_type)知道它永远不会被调用并关闭编译器?或者还有没有其他更优雅的方式来做到这一点?
感谢
不要你的意思'Contract.Assert(假的, “无效的状态!”);'? – 2010-08-03 14:38:16
是的,我做过了。 :facep: – 2010-08-03 15:47:01