c# - 什么时候应该使用 C# 4.0 附带的代码契约?

标签 c# c#-4.0 code-contracts

<分区>

我正在经历一个关于 SO 的问题,这个问题是关于 new features of c# 4.0 的和 jon skeet 的回答有 C# 4.0 的代码契约(Contract)功能。但我真的不明白什么时候使用它们。任何建议......

最佳答案

只要有可能。例如,在方法的开头使用保护子句的任何地方,如

public void Write(TextWriter tw, object o) {
    if(tw == null) {
        throw new ArgumentNullException("tw");
    }
    if(o == null) {
        throw new ArgumentNullException("o");
    }
    tw.WriteLine(o.ToString());
}

你应该改用

public void Write(TextWriter tw, object o) {
    Contract.Requires(tw != null);
    Contract.Requires(o != null);
    tw.WriteLine(o.ToString());
}

Contract 的美妙之处在于它们变得公开并且可以成为文档的一部分而您无需额外的工作,因为保护条款不公开并且只能放入文档中有一些繁重的工作。因此,通过Contract,您可以更清楚地在代码中表达需求和 promise 。

关于c# - 什么时候应该使用 C# 4.0 附带的代码契约?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4394812/

相关文章:

c# - MySql 数据库中的 Entity Framework 代码优先迁移

c# phone 8.1 更改 jpeg 质量

c# - 画线时 Pen.Alignment 不起作用

c# - 将 XML 直接写入磁盘并追加元素

multithreading - C# - 尝试使用以 Action 作为参数的函数创建线程进程

c# - [纯] 函数可以抛出异常吗?

c# - 为什么我收到 'Invariant unproven' 警告

code-contracts - 为什么 VS 2010 中没有出现“代码契约(Contract)”选项卡?

c# - 传递字符串参数时 'S'附近的语法不正确

visual-studio - Visual Studio 指南 : Whats the right way since its 'outdated' ?