LayoutKind.md 859 B

#unity/日常积累

‌LayoutKind控制对象在内存中的布局‌。LayoutKind主要有三种类型:

‌Auto‌:运行时自动为非托管内存中的对象成员选择适当的布局,不能用在托管代码中,否则会导致异常。

‌Explicit‌:精确布局,需要用FieldOffset()设置每个成员的位置,可以实现类似C的公用体的功能。

‌Sequential‌:结构体中变量的顺序是怎么写的,内存中变量的顺序就是什么样的。

在使用时,请考虑尽量使用LayoutKind.Sequential‌。

当本机结构还具有显式布局(如联合)时,请务必仅将LayoutKind.Explicit用于封送。避免使用类通过继承来表达复杂的本机类型。如果需要在.NET Core 3.0之前以运行时为目标,请避免在非Windows平台上封送结构时使用LayoutKind.Explicit‌。