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