結構體是由若干成員組成的.布局有兩種
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在內存中地址相同
總之目的應該是管理內存的...
