構造体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
この珍しい構造体レイアウトがあるのか 誰にも分かりますか?