【问题标题】:Why DateTime.MinValue and DateTime.MaxValue are not const为什么 DateTime.MinValue 和 DateTime.MaxValue 不是 const
【发布时间】:2019-04-14 06:21:45
【问题描述】:

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

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

【问题讨论】:

标签: c#


【解决方案1】:

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

我尝试查看 struct DateTime 但找不到任何初始化这些字段的构造函数。

它们已就地初始化: https://referencesource.microsoft.com/#mscorlib/system/datetime.cs,114

实际上,静态字段的初始化会在静态构造函数中生成:

趣事

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

【讨论】:

  • 可能值得修改你的第一句话来提及小数,因为后面的部分与之相矛盾。还值得注意的是,如果 C# 想要支持它们,可以以相同的方式使用 DateTimeConstantAttribute
  • @JonSkeet:我更正了第一句话。我不知道DateTimeConstantAttribute,谢谢你的信息。
猜你喜欢
  • 2011-10-14
  • 2019-06-26
  • 1970-01-01
  • 2012-07-21
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 2020-01-31
  • 1970-01-01
相关资源
最近更新 更多