代码契约来自于微软的研究项目TEAM, 理念是”契约式设计”. 过去我们写一些方法, 在每一个方法前面加上说明文字, 告诉调用者这些方法的参数有什么要求. 但是这样做有一个缺点, 就是这样不能使调用者必须遵守调用要求. CLR4.0提供的代码契约机制可以保证调用者遵守这些调用规则, 编译时有编译器进行检查, 运行时有CLR来检查. 它类似于c++的断言机制. 但比c++的更丰富.
垣曲ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!
所有的代码契约都在 System.Diagnostics.Contracts.CodeContract静态类中定义. 来看几个常用的:
方法体刚进入时用:
CodeContract.Requires(x>= 0); 明眼人一看就懂, 它受编译开关的影响, 比如你可以只在调试模式下使用此代码契约.
CodeContract.RequiresAlways(x>= 0); 基本和上面这个一样, 唯一区别它不受编译开关的影响,即不管是Debug还是Release模式都要包括这个代码契约.
方法体退出时用(这些须写在方法体的开始处):
对象不变量
对象不变量确保所有公共方法返回时某些条件必须满足. 对象不变量定义在一个单独的方法内, 此方法要有[ContractInvariantMethod]做标注. 方法名无所谓, 但是方法必须返回void, 并且没有参数, 方法体内可以有多个CodeContract.Invariant语句, 如:
【编辑推荐】
文章题目:探秘CLR 4.0中的代码契约
标题URL:http://www.shufengxianlan.com/qtweb/news33/143283.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联