惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Last Week in AI
Last Week in AI
T
Tailwind CSS Blog
V
Visual Studio Blog
Jina AI
Jina AI
博客园 - 司徒正美
The Cloudflare Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
有赞技术团队
有赞技术团队
小众软件
小众软件
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
WordPress大学
WordPress大学
爱范儿
爱范儿
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏

博客园 - 宝气狗

【摄影】2008年06月07日西塘 【摄影】2008年05月24日大明山 2007年11月——感受黄山,天下无山。 将基础数据类型与字节数组相互转换 托管/非托管类型对照 【数据库】遍历XML根下的一级节点 - 宝气狗 - 博客园 Enterprise Library中缓存过期策略探究 css中的nowrap 2007年9月15日 九溪-五云山-梅家坞之行 宝气狗的新闻博开始使用http://webbased.cn [设计模式] 15.Command 命令模式 [设计模式] 22.State 状态模式 [设计模式] 23.Strategy 策略模式 值类型装箱拆箱需要注意的地方 MSIL指令速查 内存一致性问题(续一) 内存一致性问题 如何循序渐进向DotNet架构师发展 关于将Queue中的数据拼接成xml的经验
CLR如何控制类型中字段的布局
宝气狗 · 2007-07-12 · via 博客园 - 宝气狗

参考: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(联合)中。如上例,指定多个字段起始于内存中的同个偏移地址。
注意:一个引用类型和一个值类型重叠是非法的。
           多个引用类型重叠虽不非法,但无法校验。
           多个值类型重叠合法,但所有重叠的字节都必需通过公共字段访问,使类型可校验。