У меня есть немного кода со следующей логикой:Что делать при использовании 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()? Возврат null или default (element_type) после вызова Contract.Assert(), зная, что он никогда не будет вызван и не закрыт компилятор? Или есть другой более элегантный способ сделать это?
Благодаря
Не значит 'Contract.Assert (ложный, "Invalid состояние!");'? –
Да, да. : facep: –