.NET Framework中的System
命名空间包含许多未由C#预定义的重要类型,例如: DateTime
。
请您解释一下,为什么DateTime
不是预定义类型?
答案 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
?