.Net Code Contracts – 在哪里可以了解更多信息?
我最近在办公室里听到过关于.Net“合同”的一些讨论,然而,当我问我的一些同事时,他们不是很容易向我解释他们的用途,甚至是什么。
有没有人有任何资源,解释,也许还有他们使用的教程?
谢谢,
保罗
代码契约是在.NET 4.0中引入的,它们提供了一种语言无关的方法来表达程序中的编码假设。
它们基本上允许您检查前置条件,后置条件和其他function,并且可以极大地改进测试过程以及正在编写的代码的最终质量。
来自微软:
学到更多:
代码契约是对函数输入和输出执行检查的一种相对较新的方法。 它们与标准Assert
类型检查的不同之处在于,检查输入的生成的IL在调用函数之前直接检查它,并在函数实际退出之后检查输出的代码。
为什么这有用?
好吧,它会阻止您在认为函数可能返回后修改变量,从而可能引入错误。
这是一个例子。
public void doSomething(SomeObject foo) { Contract.Requires(foo != null); }
现在,代码合同要求在检查之前没有代码。 在生成的IL中,在调用之前测试foo
的值。 这是确保您的输入符合预期的可靠方法。
另一种是Contract.Ensures
构造。 这基本上与Requires
相似,但对您的返回值进行操作。
public int doSomethingElse() { Contract.Ensures(Contract.Result() != 0); int ret = 1; return ret; }
如果您的函数有多个退出路径,这将特别有用…
上述就是C#学习教程:.Net Code Contracts – 在哪里可以了解更多信息?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
public int someBadFunction() { Contract.Ensures(Contract.Result() != 0); if(....) { if(....) return 2; if(....) return 8; } return 3; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1019458.html