我最近一直在研究 DbC 和 Spec#,它们似乎支持不可为空的对象。不幸的是,Spec# 似乎已被放弃。
- Spec# 似乎内置了很多不错的语言特性,为什么它被放弃了?
- 默认情况下让所有对象都不可为空会有什么问题,所以你必须写 int?, string?甚至MailMessage?如果你真的想要一个可为空的对象?
- 我在这里看到了一种 Sql 类比,您可以将类属性检查为可空或不可空。您甚至可以像使用 sql 表列那样对属性施加约束吗?
我没有看到将此类功能内置到语言中的问题。有人可以启发我吗?
我最近一直在研究 DbC 和 Spec#,它们似乎支持不可为空的对象。不幸的是,Spec# 似乎已被放弃。
我没有看到将此类功能内置到语言中的问题。有人可以启发我吗?
您是否看到新的Contracts 框架将成为 .NET 4.0 的一部分?
使其成为库而不是语言功能的好处是,它可以立即以所有语言提供,而无需语言团队进行任何工作。显然也有缺点...
链接:
说了这么多,我希望能够写:
public Stream! Foo(string! x)
同样,表明 Foo 不能接收空引用,也不会返回一个。我认为,为这种类型的合约添加一些额外的语法会很方便。