構造体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 値の型) のレイアウトは "Sequential" になります (StructLayoutAttribute別のレイアウトを指定するために a が適用されていない場合)。
いくつかの一般的なBCLアセンブリを検索したところ、このレイアウトで見つかった公開されている構造体は と だけでしたDateTime。DateTimeOffset
なぜDateTimeこの珍しい構造体レイアウトがあるのか 誰にも分かりますか?