我真的很想嘗試Visual Studio 2010中的新代碼合同,但我不想安裝Visual Studio的附加擴展(因爲我的代碼與我的同事分享)。 現在,當針對.NET 4.0時,我可以使用新的System.Diagnostics.Contracts名稱空間,但我還沒有完成任何操作。.NET 4.0中的開箱即用代碼合同
例如,使用
static void Main(string[] args)
{
Greet(null);
Console.ReadLine();
}
private static void Greet(string name)
{
Contract.Requires(name != null);
Console.Out.WriteLine("Hello {0}", name);
}
程序編譯和運行沒有任何形式的警告(顯示「你好」)。如果我嘗試使用Contract.Requires<ArgumentNullException>(name != null)
,我會收到一條消息,告訴我必須使用重寫器,而不考慮名稱的值。 谷歌告訴我,當我安裝Code Contracts溢價時,我可以獲得任何魔法,但是當我沒有時,這個命名空間的目的是什麼?我可以使用代碼合同作爲開箱即用的精緻評論嗎?
定義CONTRACTS_FULL必定會使非通用版本,但當然我忘記了部署代碼*咳嗽*。謝謝! – Jens
@Jens:「請求重寫者」是什麼意思?我預計它只會拋出一個異常... –
我得到一個斷言失敗,並顯示消息「使用Contract.Requires時必須使用重寫器」。 – Jens