StructLayout(LayoutKind.Sequential)——c# 待我称王封你为后i 2022-08-13 14:00 40阅读 0赞 1.Sequential,顺序布局 比如 struct S1 \{ int a; int b; \} 那么默认情况下在内存里是先排a,再排b, 也就是如果能取到a的地址,和b的地址,则相差一个int类型的长度,4字节 \[StructLayout(LayoutKind.Sequential)\] struct S1 \{ int a; int b; \} 这样和上一个是一样的.因为默认的内存排列就是Sequential,也就是按成员的先后顺序排列. 2.Explicit,精确布局 需要用FieldOffset()设置每个成员的位置, 这样就可以实现类似c的公用体的功能 \[StructLayout(LayoutKind.Explicit)\] struct S1 \{ \[FieldOffset(0)\] int a; \[FieldOffset(0)\] int b; \} 这样a和b在内存中地址相同
还没有评论,来说两句吧...