Структура 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
имеет эту необычную структуру структуры?