今天我读到了关于C#4.0代码契约的内容。这似乎是在验证参数的方法常见的做法是不为空如下:C#代码契约 - 避免检查空引用的参数
Contract.Requires(p != null);
但是它似乎很不合理,我认为我必须为每一个接口方法的每一个参数做到这一点在我的代码中。在绝大多数情况下,参数预计不会为空。我预计会有某种机制允许定义一些特定参数为“允许”为null(类似于Java中的“@Nullable”注释),并且Contracts框架将自动确保其余部分不会空值。
除了在这个“样板检查”(以及许多“合同类”)上节省了大量时间外,它还可以使许多时候没有任何条件需要验证,除非非空参数)合同代码更清洁,更“逻辑导向”。
我的问题是,有没有办法做到这一点,如果没有,那里没有一个,或者为什么我的方法在这里错了?
它本来是有用的,但没有任何速记可以做到这一点,因为没有人改变语言规范来提供它,然后实现它并发布它。请参阅Eric Lippert在此处对类似问题的回复:http://stackoverflow.com/questions/2806894/why-c-sharp-doesnt-implement-indexed-properties – 2013-03-18 07:20:53
您可以使用'crn'片段自动生成样板这些非空的语句,这减少了键入。 – 2013-03-31 19:56:50