我開始使用代碼合同,雖然Contract.Requires非常簡單,但我很難看到確保實際執行的操作。Contract.Ensures如何工作?
我試圖創建這樣一個簡單的方法:
static void Main()
{
DoSomething();
}
private static void DoSomething()
{
Contract.Ensures(false, "wrong");
Console.WriteLine("Something");
}
我從來沒有看到消息「錯誤的」,雖然,也不拋出異常或其他任何東西。
那它究竟做了什麼?
我開始你的例子,並得到一個未處理的異常'ContractException'「後置失敗:錯誤的」寫入控制檯後的東西。所以看起來很好。 –
靜態證明器是代碼合約背後的真正價值,雖然這種特殊的確保條件很奇怪,從分析的角度來看。這大致相當於要求一個人證明「這個陳述是錯誤的」的真相。 –
錯誤的部分只是爲了確保它被觸發:-) – Steffen