C#在调用WInAPI函数时,可能会看到如下的声明
1 [StructLayout(LayoutKind.Sequential)] 2 public struct RECT 3 { 4 public int Left; 5 public int Top; 6 public int Right; 7 public int Bottom; 8 }
在类或者结构体前面带上了
[StructLayout(LayoutKind.Sequential)]
StructLayoutAttribute特性的作用是允许你控制内存中类或结构的数据字段的物理布局。
平常我们在C#代码中使用类或者结构体时,不需要使用此特性。但在与非托管代码时交互,需要使用StructLayoutAttribute特性来控制类型的非托管布局。
StructLayoutAttribute常用构造函数是:
StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind)
System.Runtime.InteropServices.LayoutKind是一个枚举类型,有三个取值。
LayoutKind.Sequential:强制按成员的显示顺序对其进行排列