为什么DateTime.MinValue和DateTime.MaxValue不是const

时间:2019-04-14 06:21:46

标签: c#

为什么DateTime.MinValueDateTime.MaxValue不像int.MinValueint.MaxValue那样常量?为什么C#会这样做?

我试图看一下struct DateTime,但是找不到任何初始化这些字段的构造函数。

1 个答案:

答案 0 :(得分:3)

在.NET中,只有基本类型和字符串可以是常量。

  

我试图看一下结构DateTime,但找不到任何初始化这些字段的构造函数。

它们在适当的地方初始化: https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,114

实际上,静态字段的初始化将在静态构造函数中生成:enter image description here

有趣的事实

在C#中,您可以定义decimal常量;但是,decimal不是原始类型。在后台,这些“常量”也将被编译为具有特殊DecimalConstant属性的静态字段: enter image description here