2025-03-26 00:02:56 +08:00

859 B
Raw Blame History

#unity/日常积累

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

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

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

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

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

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