859 B
859 B
#unity/日常积累
LayoutKind控制对象在内存中的布局。LayoutKind主要有三种类型:
Auto:运行时自动为非托管内存中的对象成员选择适当的布局,不能用在托管代码中,否则会导致异常。
Explicit:精确布局,需要用FieldOffset()设置每个成员的位置,可以实现类似C的公用体的功能。
Sequential:结构体中变量的顺序是怎么写的,内存中变量的顺序就是什么样的。
在使用时,请考虑尽量使用LayoutKind.Sequential。
当本机结构还具有显式布局(如联合)时,请务必仅将LayoutKind.Explicit用于封送。避免使用类通过继承来表达复杂的本机类型。如果需要在.NET Core 3.0之前以运行时为目标,请避免在非Windows平台上封送结构时使用LayoutKind.Explicit。