C#代码契约 - 避免检查空引用的参数

时间:2013-03-18 07:08:57

标签: c# c#-4.0 code-contracts

我今天读到了有关C#4.0代码合同的信息。似乎验证方法的参数不为null的常见做法如下:

Contract.Requires(p != null);

然而,对于我来说,我必须为我的代码中的每个接口方法的每个参数执行此操作,这似乎是不合理的。在绝大多数情况下,参数预计不为空。我希望有某种机制允许定义一些特定的参数被“允许”为空(类似于Java中的“@Nullable”注释),并且Contracts框架将自动确保其余的不是空。

除了节省很多时间在这个“样板检查”(以及许多“合同类”,除了非空参数之外,根本没有任何条件需要验证),它也会使合同代码更清洁,更“逻辑导向”。

我的问题是,有没有办法做到这一点,如果不是,那里不存在,或者为什么我的方法在这里错了?

1 个答案:

答案 0 :(得分:1)

我不同意,当您需要检查某些内容是否尚未初始化,或者找不到数据时,null非常有用,有时您会想要将null传递给方法并且它很好,代码合同适用于为许多类提供服务的常用方法,以及api定义。如果您在分层架构中编写,则只需要保护层之间的交互,并且在每个层内都是空的。

您的域名为空,并且没问题。