2010-08-12 36 views

回答

5

這些是基於框架的,與.NET語言無關的定義代碼合同的方法。雖然一些語言如spec#和Delphi Prism對代碼合約擁有一流的語言支持,但這種基於框架的方法使其可用於所有.NET語言。 IronRuby,IronPython,F#,VB.NET等。

Require()是對ENTRY的方法級別檢查,Ensure()是對EXIT的方法級別檢查,Assert()叫做。也就是說,在這些方法適用的任何一點上,都會評估你傳遞給他們的條件。如果不符合該條件,則會發生錯誤。

+0

如果它只用於檢查,甚至我們可以使用,如果條件,但這些類型的方法需要什麼... – Krishna 2010-08-12 16:31:25

+0

U的意思是說,像這些功能檢查條件,它會引發異常.... – Krishna 2010-08-12 16:39:49

+0

默認情況下,用戶將看到一個唯一的異常對話框。這是一箇中止/重試/忽略對話框。但這是一個可以被困的例外。 – 2010-08-12 16:43:25

0

除了別人說的話,如果運行更昂貴的Visual Studio版本,也可以在編譯期間檢查合同。這樣你可以證明你的程序中一個參數不會爲空。這也意味着檢查將是不必要的,C#編譯器可以優化它。

如果您對質量要求非常高,且代碼相對較小且緊密,那麼這些編譯時檢查可能非常有用。