在类和结构之间选择
来源:互联网 发布:阿里云 香港机房 被墙 编辑:程序博客网 时间:2024/06/01 07:55
来自:http://msdn.microsoft.com/zh-cn/library/ms229017(v=vs.100).aspx
类是引用类型,而结构是值类型。 引用类型在堆中分配,内存管理由垃圾回收器处理。 值类型在堆栈上或以内联方式分配,且在超出范围时释放。 通常,值类型的分配和释放开销更小。 然而,如果在要求大量的装箱和取消装箱操作的情况下使用,则值类型的表现就不如引用类型。 有关更多信息,请参见装箱和取消装箱(C# 编程指南)。
有关值类型和引用类型的更多信息,请参见 常规类型系统。
如果类型的实例不大,且通常生存期短或嵌入其他对象,则考虑定义结构而不是类。
不要定义结构,除非该类型具备以下所有特征:
它在逻辑上表示单个值,与基元类型(整型、双精度型等)类似。
它的实例大小小于 16 字节。
它是不可变的。
它将不必频繁被装箱。
如果这些条件中的一个或多个没有满足,则创建引用类型而不是结构。 不遵守此准则会对性能产生负面影响。
部分版权所有 2005 Microsoft Corporation。 保留所有权利。
部分版权所有 Addison-Wesley Corporation。 保留所有权利。
设计指引的详细信息,请参阅"框架设计准则: 公约、 成语和可重复使用的模式。网络图书馆"书 Krzysztof Cwalina 和布拉德 · 艾布拉姆斯,2005年艾迪生 - 韦斯利,发表。
- 在类和结构之间选择
- c# 如何在类(class)和结构体(struct)之间做选择
- 在单例模式和工具类之间如何选择?
- 在DataSet和DataReader之间选择
- 在 IPSec 和 SSL 之间如何选择?
- 在DataSet和DataReader之间选择
- DB2 在identity和序sequence之间做出选择
- 豆瓣在python和ruby之间为何选择前者?
- [在聪明和踏实之间,我更愿意选择后者。
- 在 DateTime、DateTimeOffset 和 TimeZoneInfo 之间进行选择
- 如何在 SVG 和 Canvas 之间进行选择
- 在Timer和ScheduledExecutorService以及 clockManager之间的选择
- 在MySQL和PostgreSQL之间,我选择了后者
- 我在Python和Ruby之间的选择
- 不要逼男人在你和他妈妈之间选择
- 选择结构和循环结构
- 选择结构和循环结构
- 选择结构和循环结构
- 第四次作业
- 读《松本行弘的程序世界》——松本行弘眼中Ruby受欢迎的原因
- 黑马程序员_java基础(语法)
- RecPermute Code
- HDU 4510-小Q系列故事——为什么时光不能倒流
- 在类和结构之间选择
- android中sqlite的使用(一)
- 基于音频指纹技术的微信“摇一摇搜歌”和QQ音乐“听歌识曲”
- <iOS>关于子线程和block中操作主线程界面的控件讨论
- C++类型转换
- jquery常用方法总结
- 少年派
- 1019 最大乘积连续子串
- Struts2原理详解