为什么DateTime.MinValue和DateTime.MaxValue不是常量?
为什么DateTime.MinValue和DateTime.MaxValue不是const?
在.NET中,只有原始类型和字符串可以被定义为常量。然而,在DateTime结构中并没有找到初始化这些字段的构造函数。事实上,它们是在源代码中直接进行了初始化。在实践中,静态字段的初始化将在静态构造函数中生成。
有趣的是,在C#中可以定义decimal常量,尽管decimal并不是原始类型。在后台,这些“常量”也将编译为带有特殊DecimalConstant属性的静态字段。可以考虑修改第一句话,提到decimal,因为后面的部分与之相矛盾。值得注意的是,如果C#以后想要支持DateTime常量,还可以使用DateTimeConstantAttribute。
DateTime.MinValue和DateTime.MaxValue不能被定义为const的主要原因是,它们无法满足.NET只允许原始类型和字符串作为常量的规定。解决方法是在静态构造函数中进行初始化,而不是使用const来定义常量。