Check.Assert()、Check.Ensure() 和 Check.Require() 的作用是什么?

发布于 2024-09-13 22:09:08 字数 19 浏览 4 评论 0原文

请告诉我这些功能的作用。

Please tell me what those functions do.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

飘过的浮云 2024-09-20 22:09:08

这些是基于框架、与语言无关的方法,用于在 .NET 中定义代码协定。虽然某些语言(例如spec#和Delphi Prism)对代码契约具有一流的语言支持,但这种基于框架的方法使其可用于所有.NET语言。 IronRuby、IronPython、F#、VB.NET 等。Require

() 是对 ENTRY 的方法级检查,Ensure() 是对 EXIT 的方法级检查,而 Assert() 是在调用任何点时进行检查。也就是说,无论这些方法应用在什么执行点,您传递给它们的条件都会被评估。如果不满足该条件,则会发生错误。

These are framework-based, language-agnostic methods for defining code contracts in .NET. While some languages such as spec# and Delphi Prism have first-class language support for code contracts, this framework-based approach makes it available to all .NET languages. IronRuby, IronPython, F#, VB.NET etc.

Require() is a method-level check on ENTRY, Ensure() is a method-level check on EXIT, and Assert() is a check at whatever point it is called. That is to say that at whatever point of execution these methods apply, the condition which you pass to them will be evaluated. If that condition is not met, an error occurs.

雨夜星沙 2024-09-20 22:09:08

谷歌搜索您的标题并找到以下内容:

http://www.codeproject.com/KB/cs/designbycontract.aspx

基本上,它们是帮助您使用“契约设计”方法编写代码的方法。

I googled your title and found the following:

http://www.codeproject.com/KB/cs/designbycontract.aspx

Basically, they are methods that help you write code using the "Design by Contract" methodology.

梦行七里 2024-09-20 22:09:08

除了其他人所说的之外,如果您运行更昂贵的 Visual Studio 版本,还可以在编译时检查合同。这样你就可以证明你的程序中的参数永远不会为空。这也意味着检查是不必要的,C# 编译器可以优化它。

如果您对质量要求非常高并且代码库相对较小且紧凑,那么这些编译时检查可能非常有用。

In addition to what others said Contracts can also be checked during compile time if you run the more expensive versions of Visual Studio. That way you can prove that for instance an argument is never null in your program. That also means that the check will be unnecessary and C# compiler can optimize it away.

These compile time checks can be very useful if you have very high requirement on quality and a relative small and tight codebase.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文