日期:2014-05-19  浏览次数:20714 次

对代码求解释StructLayout
[StructLayout(LayoutKind.Sequential)]
    public   struct   FULLPROPSPEC  
    {
        public   Guid   guidPropSet;
        public   PROPSPEC   psProperty;
    }

//看到这样的代码,查阅MSDN,看到这样的解释
StructLayoutAttribute   类使用户可以控制类或结构的数据字段的物理布局。  

请问
1.物理布局指的是什么,在内存中的位置?
2.指定这样的位置有什么好处?速度快,索引?

------解决方案--------------------
默认情况下,.net会对托管对象的布局进行调整,因为调整可以节省内存。
但是有时候,我们不希望这种自动调整,原因是,我们在调用win32api时,原api属于非托管代码,这些代码中的相应的结构中的布局是一定的,我们传入的参数必须符合原始布局,此时我们就可以使用StructLayout来确保传入的结构的布局和目标调用代码要求的布局一致。