读书人

对代码求解释StructLayout解决思路

发布时间: 2012-03-31 13:13:26 作者: rapoo

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

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

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

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

读书人网 >C#

热点推荐