Структура System.DateTime и ее двоюродный брат System.DateTimeOffset имеют свой вид структуры, установленный на "Авто". Это можно увидеть с помощью
typeof(DateTime).IsAutoLayout /* true */
или
typeof(DateTime).StructLayoutAttribute.Value /* Auto */
или это видно из IL, который объявляет:
.class public auto ansi serializable sealed beforefieldinit System.DateTime
¯¯¯¯
Обычно структура (то есть тип значения .NET, которая не является перечислением), написанная на С#, будет иметь макет "Последовательный" (если только StructLayoutAttribute не имеет был применен для указания другого макета).
Я просмотрел некоторые общие сборки BCL, и DateTime и DateTimeOffset были единственными публично видимыми структурами, которые я нашел с этим макетом.
Кто-нибудь знает, почему DateTime имеет эту необычную структуру структуры?