为了提高性能,CLR会按照它自己选择的方式来排列类型实例中的字段。例如CLR可能会在内存中重新排列对象的字段,以使对象引用可以聚合在一起,并且能够恰当地对齐和包装数据字段.但是,当我们定义一个类型时,我们也可以告诉CLR是按我们指定的顺序来存储类型实例的字段,还是以任何它认为合适的顺序重新排列字段.
我们可以在自己定义的类或者结构上应用System.Runtime.InteropServices.StructLayoutAttribute特性来告诉CLR我们期望的行为.根据该特性的构造器,我们可以传入LayoutKind.Auto来让CLR自己排列字段,或者传入LayoutKind.Sequential来让CLR保留我们设定的字段布局.如果我们定义类型时没有显式指定StructLayoutAttribute特性,编译器将选择它认为最好的布局方式.