2009-01-28 43 views
3

我一直在寻找最近的DbC和Spec#,它似乎支持非空对象。不幸的是,Spec#似乎已被放弃。非空对象有什么问题?

  1. 规范#似乎有很多很好的语言功能,所以为什么它被遗弃?
  2. 是否有任何问题,让所有的对象默认不可空,所以你将不得不写int?,字符串?甚至MailMessage?如果你真的想要一个可为空的对象?
  3. 我看到一种Sql比喻在这里 你可以检查类 属性可为空或非空 可为空。你甚至可以把 限制在属性上,因为你的 可以用sql表格列吗?

我没有看到具有这种内置于该语言中的功能的问题。有人可以在这方面给我启发吗?

回答

7

你见过新的Contracts framework将会成为.NET 4.0的一部分吗?

使它成为图书馆而不是语言功能的好处是,它可以立即用于所有语言,而不需要语言团队的工作。显然,有缺点也...

链接:

说了这么多,我想能写:

public Stream! Foo(string! x) 

以及表明Foo不能收到空引用,也不会返回。我想,对于只需要这种类型的合约将会很方便。

+0

我已经看到它,它似乎有编译器检查和更臃肿的代码少的缺点。也许他们可以将这个内置的代码发布到C#4.0并为其他语言提供框架? – terjetyl 2009-01-28 10:01:04

相关问题