该结构System.DateTime
及其表亲System.DateTimeOffset
将其结构布局类型设置为“自动”。这可以通过以下方式看到:
typeof(DateTime).IsAutoLayout /* true */
或者:
typeof(DateTime).StructLayoutAttribute.Value /* Auto */
或者可以从声明的 IL 中看出:
.class public auto ansi serializable sealed beforefieldinit System.DateTime
¯¯¯¯
通常,用 C# 编写的结构(即不是枚举的 .NET 值类型)将具有“顺序”布局(除非StructLayoutAttribute
已应用 a 来指定另一个布局)。
我搜索了一些常见的BCL程序集,DateTime
并且DateTimeOffset
是我在此布局中发现的唯一公开可见的结构。
有谁知道为什么DateTime
会有这种不寻常的结构布局?