Контракты кода C #: что можно проверить статически, а что нет ?

Я могу сказать, что довольно хорошо знаком с Кодовыми контрактами: Я ' Я прочитал и понял большую часть руководства пользователя и использую его уже довольно давно, но у меня все еще есть вопросы. Когда я ищу SO по запросу «недоказанные контракты кода», я вижу довольно много совпадений, и все спрашивают, почему их конкретное утверждение не может быть статически доказано. Хотя я мог бы сделать то же самое и опубликовать свой конкретный сценарий (который, кстати,

enter image description here),

я бы лучше понял, почему любое условие Контракта кода может или не может быть доказано. Иногда меня впечатляет то, что он может доказать, а иногда я ... ну ... говоря вежливо: определенно не впечатлен. Если я хочу понять это, я хотел бы знать механизмы, которые использует статическая проверка. Я уверен на опыте научусь, но я распыляю Контракт. Предположите повсюду утверждения, чтобы предупреждения исчезли, и я чувствую, что это не то, для чего предназначены кодовые контракты. Гугл мне не помог, поэтому я хочу спросить вас, ребята, из вашего опыта: какие (неочевидные) закономерности вы видели? И что заставило вас увидеть свет?

22
задан Amy 17 February 2011 в 10:40
поделиться