2009-01-28 44 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

相關問題