LayoutKind.Auto
просто означает: «Я даю CLR разрешение переупорядочивать байты, соответствующие этим полям».Он решает, как именно реорганизовать поля для использования памяти, упаковки и так далее. То, какие именно изменения произойдут, не указано в документации, возможно, потому, что это деталь реализации, которая не имеет отношения к тому, как вы пишете свои структуры.
Это неизменно плохоесли вы переходите к неуправляемому коду, потому что неуправляемый код ожидает, что эти поля будут в определенном порядке.Их возможная перестройка неизбежно приведет к непредвиденным последствиям.Вот почему вы не можете выставить LayoutKind.Auto
структуры неуправляемому коду.