【发布时间】:2019-04-14 06:21:45
【问题描述】:
为什么DateTime.MinValue 和DateTime.MaxValue 不像int.MinValue 和int.MaxValue 那样是常量?为什么C# 会这样做?
我试图查看struct DateTime,但找不到任何初始化这些字段的构造函数。
【问题讨论】:
-
在同一版本的 .NET 中它们是否不同?它们在什么情况下不同?
标签: c#
为什么DateTime.MinValue 和DateTime.MaxValue 不像int.MinValue 和int.MaxValue 那样是常量?为什么C# 会这样做?
我试图查看struct DateTime,但找不到任何初始化这些字段的构造函数。
【问题讨论】:
标签: c#
在 .NET 中,只有原始类型和字符串可以是常量。
我尝试查看 struct DateTime 但找不到任何初始化这些字段的构造函数。
它们已就地初始化: https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,114
趣事:
在 C# 中,您可以定义 decimal 常量;但是,decimal 不是原始类型。在后台,这些“常量”也将被编译为具有特殊 DecimalConstant 属性的静态字段:
【讨论】:
DateTimeConstantAttribute。
DateTimeConstantAttribute,谢谢你的信息。