日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
探秘CLR 4.0中的代碼契約

代碼契約來自于微軟的研究項目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模式都要包括這個代碼契約.

方法體退出時用(這些須寫在方法體的開始處):

// 方法體關(guān)閉時必須為真 must be true if method closes successfully 
CodeContract.Ensures(z != null);
// 確保發(fā)生異常時某些變量的狀態(tài) Grantuee some variable status in
CodeContract.EnsuresOnThrow (z != null);case of specific exceptions.

對象不變量

對象不變量確保所有公共方法返回時某些條件必須滿足. 對象不變量定義在一個單獨的方法內(nèi), 此方法要有[ContractInvariantMethod]做標(biāo)注. 方法名無所謂, 但是方法必須返回void, 并且沒有參數(shù), 方法體內(nèi)可以有多個CodeContract.Invariant語句, 如:

[ContractInvariantMethod]
  void ObjectInvariant() { 
   CodeContract.Invariant(someData >= 0);
 }

【編輯推薦】

  1. 詳解.NET 4.0代碼契約組件
  2. 在CLR之上的構(gòu)建領(lǐng)域特定語言
  3. Visual Studio中的SQL Server CLR代碼調(diào)試

當(dāng)前名稱:探秘CLR 4.0中的代碼契約
文章網(wǎng)址:http://www.dlmjj.cn/article/dphcjji.html