新聞中心
代碼契約來自于微軟的研究項目TEAM, 理念是”契約式設(shè)計”. 過去我們寫一些方法, 在每一個方法前面加上說明文字, 告訴調(diào)用者這些方法的參數(shù)有什么要求. 但是這樣做有一個缺點, 就是這樣不能使調(diào)用者必須遵守調(diào)用要求. CLR4.0提供的代碼契約機制可以保證調(diào)用者遵守這些調(diào)用規(guī)則, 編譯時有編譯器進行檢查, 運行時有CLR來檢查. 它類似于c++的斷言機制. 但比c++的更豐富.

垣曲ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
所有的代碼契約都在 System.Diagnostics.Contracts.CodeContract靜態(tài)類中定義. 來看幾個常用的:
方法體剛進入時用:
CodeContract.Requires(x>= 0); 明眼人一看就懂, 它受編譯開關(guān)的影響, 比如你可以只在調(diào)試模式下使用此代碼契約.
CodeContract.RequiresAlways(x>= 0); 基本和上面這個一樣, 唯一區(qū)別它不受編譯開關(guān)的影響,即不管是Debug還是Release模式都要包括這個代碼契約.
方法體退出時用(這些須寫在方法體的開始處):
對象不變量
對象不變量確保所有公共方法返回時某些條件必須滿足. 對象不變量定義在一個單獨的方法內(nèi), 此方法要有[ContractInvariantMethod]做標(biāo)注. 方法名無所謂, 但是方法必須返回void, 并且沒有參數(shù), 方法體內(nèi)可以有多個CodeContract.Invariant語句, 如:
【編輯推薦】
- 詳解.NET 4.0代碼契約組件
- 在CLR之上的構(gòu)建領(lǐng)域特定語言
- Visual Studio中的SQL Server CLR代碼調(diào)試
當(dāng)前名稱:探秘CLR 4.0中的代碼契約
文章網(wǎng)址:http://www.dlmjj.cn/article/dphcjji.html


咨詢
建站咨詢
