为什么.NET不使用无符号整数类型来实现DateTime.Month和DateTime.Year?

时间:2016-07-19 14:15:16

标签: .net unsigned unsigned-integer fcl

为什么.NET不使用无符号整数类型,如ushortUInt32)或event.stopPropagation()UInt16)来表示不能为负数的属性,例如DateTime.YearDateTime.Month。事实上,我从来没有在FCL中看到过它们用于我的记忆。我们何时假设使用它们?

1 个答案:

答案 0 :(得分:3)

引用" Language Independence and Language-Independent Components"

  

.NET Framework与语言无关。这意味着,作为开发人员,您可以使用面向.NET Framework的多种语言之一进行开发,例如C#,C ++ / CLI,Eiffel,F#,IronPython,IronRuby,PowerBuilder,Visual Basic,Visual COBOL和Windows电源外壳。您可以访问为.NET Framework开发的类库的类型和成员,而无需了解它们最初编写的语言,也无需遵循任何原始语言的约定。如果您是组件开发人员,则任何.NET Framework应用程序都可以访问您的组件,无论其语言如何。

并非所有语言都支持无符号整数,因此在公共或受保护方法中使用无符号整数会使您的代码不符合CLS。您可以在私人和内部成员上使用它们,而不是在公共成员或受保护成员上使用它们。因此,.NET框架尝试使其所有公共方法和成员符合CLS,以便可以使用任何语言。