参考:CLR Via C#, Second Edition, by Jeffrey Richter

CLR自动排列类型实例中的字段以提高性能(如将相关性引用聚合在一起)。但我们仍然可以手动指定排列顺序:
[StructLayout(LayoutKind.Auto)]自动排列

[StructLayout(LayoutKind.Sequential)]保留我们的字段布局

[StructLayout(LayoutKind.Explicit)]指定偏移量
例如:
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Explicit)]
internal struct SomeValType
{
    [FieldOffset(0)] Byte b;
    [FieldOffset(0)] Int16 x;
}

指定偏移量主要用在非托管c/c++中的union(联合)中。如上例,指定多个字段起始于内存中的同个偏移地址。
注意:一个引用类型和一个值类型重叠是非法的。
           多个引用类型重叠虽不非法,但无法校验。
           多个值类型重叠合法,但所有重叠的字节都必需通过公共字段访问,使类型可校验。
posted on 2007-07-12 14:21  宝气狗  阅读(237)  评论(0)    收藏  举报