为什么DateTime不是预定义类型?

时间:2015-01-06 11:36:05

标签: c# .net datetime

.NET Framework中的System命名空间包含许多未由C#预定义的重要类型,例如: DateTime

请您解释一下,为什么DateTime不是预定义类型?

3 个答案:

答案 0 :(得分:3)

为什么要这样?它不是basic type,而是struct of various basic types

仅包含支持CLR所需的最低类型,仅此而已。在CLR级别上不需要声明很多类型,它只会使它更复杂,并且使得在各种平台上维护CLR成为一个地狱。

由于类型是建立在CLR之上的,因此它可以从CLR带来的抽象中受益。

答案 1 :(得分:3)

正如您所见,types that have aliases(如System.Int32 - > int)也是"预定义"在系统命名空间中。根据该逻辑,DateTime是预定义的,它只是没有别名。

答案 2 :(得分:2)

因为它不在语言规范中:

  

4.1值类型

     

[...] C#提供了一组称为简单类型的预定义结构类型。简单类型通过保留字识别。

     
      
  • 简单型:   
        
    • 数值型
    •   
    • BOOL
    •   
  •   
  • 数值型:   
        
    • 整体型
    •   
    • 浮点型
    •   
    • 小数
    •   
  •   

至于"为什么",你需要一位语言设计师。你为什么期望它?为什么DateTime,而不是Point