2016-07-19 45 views
0

爲什麼不.NET使用無符號整數類型等uintUInt32)或ushortUInt16),選擇那些不能爲負值,像DateTime.YearDateTime.Month性質。事實上,我從來沒有見過他們在FCL中用於我的回憶。我們什麼時候假設使用它們?.NET爲什麼不使用無符號整數類型來處理像DateTime.Month和DateTime.Year這樣的事物?

+2

因爲它們不符合CLS?然後看看[這個問題](http://stackoverflow.com/questions/6325/why-are-unsigned-ints-not-cls-compliant?rq=1)的答案爲什麼他們不是。 –

+0

啊,而且我現在注意到MSDN在那些不符合CLS的類型的頂部註明了它的位置。 –

+0

.NET 1.0中提供的四種語言中的兩種不能處理無符號整數。 J#已經死了,VB.NET在2.0版本中得到了更新,所以它今天不是什麼大問題。但是他們當然不能再改變它了。 –

回答

3

引述 「Language Independence and Language-Independent Components

.NET框架是獨立的語言。這意味着,作爲開發人員,您可以使用C#,C++/CLI,Eiffel,F#,IronPython,IronRuby,PowerBuilder,Visual Basic,Visual COBOL和Windows等多種面向.NET Framework的語言進行開發。電源外殼。您可以訪問爲.NET Framework開發的類庫和類成員,而無需知道它們最初編寫的語言,而無需遵循任何原始語言的約定。如果你是一個組件開發者,你的組件可以被任何.NET Framework應用訪問,而不管它的語言如何。

並非所有的語言都支持無符號整數,因此在公共或受保護的方法中使用無符號整數會使您的代碼不符合CLS。您可以在私人和內部成員上使用它們,而不是公共或受保護的成員。正因爲如此,.NET框架試圖使其所有的公共方法和成員都符合CLS,因此可以從任何語言中使用它們。

相關問題