在msdn,上,我看到,它是这样解释的 StructLayout.Auto 运行库自动为非托管内存中的对象的成员选择适当的布局。使用此枚举成员定义的对象不能在托管代码的外部公开。尝试这样做将引发异常。
Q:"使用此枚举成员定义的对象不能在托管代码的外部公开",公开是啥个意思啊?Explicit 对象的各个成员在非托管内存中的精确位置被显式控制。每个成员必须使用 FieldOffsetAttribute 指示该字段在类型中的位置。
Q: “指示该字段在类型中的位置”有啥意义啊?StructLayout.Sequential 对象的成员按照它们在被导出到非托管内存时出现的顺序依次布局。这些成员根据在 StructLayoutAttribute.Pack 中指定的封装进行布局,并且可以是不连续的。Q:“StructLayoutAttribute.Pack 中指定的封装”代表什么啊?最后一个问题:
控制对象在非内存的位置有啥意义啊?
Q:"使用此枚举成员定义的对象不能在托管代码的外部公开",公开是啥个意思啊?Explicit 对象的各个成员在非托管内存中的精确位置被显式控制。每个成员必须使用 FieldOffsetAttribute 指示该字段在类型中的位置。
Q: “指示该字段在类型中的位置”有啥意义啊?StructLayout.Sequential 对象的成员按照它们在被导出到非托管内存时出现的顺序依次布局。这些成员根据在 StructLayoutAttribute.Pack 中指定的封装进行布局,并且可以是不连续的。Q:“StructLayoutAttribute.Pack 中指定的封装”代表什么啊?最后一个问题:
控制对象在非内存的位置有啥意义啊?
解决方案 »
- C# 如何在当前程序安装目录下创建文件
- Hashtable 遍历输出起来越慢,为什么
- Tcp 收发消息 求助
- 如何用公钥加密,私钥解密
- c# 那个[]的用法,还有一点点的问题,希望高手们解答下
- C#中如何删除文本文件
- 请教高手,resources.GetObject("imlIcons.ImageStream") 出错. acptvb(微软全球技术中心 VB技术支持)
- 为什么画矩形没有显示出来?
- reportviewer vs2010 打印出来的字体和预览不一致
- 我想用socket模拟一个向WEB服务器POST数据的客户端,请问...
- Membership,究竟那里吸引我?
- 使用宏失败的一个询问
Explicit
你自己强制安排类字段布局,当PInvoke时肯定要用这个,你自己强制指定排列方式,以与C中的结构定义相匹配。
StructLayout.Sequential 就很好理解了吧。
StructLayoutAttribute.Pack实际就是字节对齐方式。C++中有对等的东西。控制对象在非内存的位置有啥意义啊?
边界对齐,提高访问效率。