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

推荐订阅源

Y
Y Combinator Blog
D
Docker
有赞技术团队
有赞技术团队
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
爱范儿
爱范儿
H
Help Net Security
美团技术团队
MyScale Blog
MyScale Blog
B
Blog RSS Feed
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
阮一峰的网络日志
阮一峰的网络日志
A
About on SuperTechFans
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
G
Google Developers Blog
月光博客
月光博客
Google DeepMind News
Google DeepMind News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
F
Fortinet All Blogs

博客园 - 宝气狗

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