C#基础系列(8)-- 第三部分 面向对象相关 -- 类与结构(1)
来源:互联网 发布:徐州淘宝村 编辑:程序博客网 时间:2024/04/27 12:34
类(class)
1. 引用类型。托管堆上分配的内存需等待垃圾回收器自动回收。
2. 支持继承,所以可以有多态行为。在面向对象功能上,类的灵活性远高于结构
3. 对象成员比较大时,可以使用类。
结构(struct)
1. 值类型。
在栈上分配内存,从而访问数据比访问堆上的引用类型快(引用类型必须在堆中通过其引用访问获得数据);
当方法调用完毕后可以快速清理为结构分配的内存,而引用类型必须等待垃圾回收器的自动清理。
复制容易。对象中包含引用类型时复制需要考虑深复制。
2. 继承自System.ValueType,隐含为sealed,不支持继承(所以结构里没有protected成员),不需要多态行为(可以通过接口实现,但考虑到装箱操作会使性能下降)
3. 在方法传递或者返回时由于结构及其数据必须复制到一个新的局部变量,性能较差。一般建议结构的大小应小于或等于及其的指针大小,在32位的机器上,传递32位大小的结构与传递引用的开销相同。
4. 不能包含用户自定义默认构造函数。C#编译器会提供一个默认构造函数,将结构中的所有字段初始化为默认值。
5. 在P/Invoke时,大多数情况,非托管DLL方法需要传入结构。
- C#基础系列(8)-- 第三部分 面向对象相关 -- 类与结构(1)
- C#基础系列(9)-- 第三部分 面向对象相关 -- 抽象类与接口(2)
- C#基础系列(10)-- 第三部分 面向对象相关 -- 浅复制与深复制(3)
- C#基础系列(7)-- 第二部分 字符串相关 -- string与StringBuilder(2)
- C#基础系列(6)-- 第二部分 字符串相关 -- byte[]与string之间的转换(1)
- c#面向对象系列1(继承)
- Java笔记 第四章(3) Java面向对象编程基础 第三部分(对象概述)
- C#基础系列(1)-- 第一部分 基础数据类型与操作 -- 位运算(1)
- JavaSE基础--(三)面向对象 部分
- 第三章 面向对象(一)--类与对象
- c#面向对象系列2(多态性)
- Java基础系列----7、面向对象()
- 面向对象基础部分
- (面试题三)【JAVAse部分】面向对象相关
- C#的类与结构,以及面向对象编程思想
- C#的类与结构,以及面向对象编程思想
- C# VS 面向对象基础(一)
- C#总结(面向对象基础)中
- Makefile中的变量
- 为ASP.NET MVC 2.0添加Razor模板引擎 (on .NET4)
- tomcat6.0配置(含配置视频下载)
- ActionForm使用java.util.Date数据类型解决方法(转)
- 黑莓bold模拟器无法上网问题之解决
- C#基础系列(8)-- 第三部分 面向对象相关 -- 类与结构(1)
- printf实现动态显示
- ZOJ 1337 Pi
- ADDS 硬盘分区
- ExtJS实用开发指南
- poll select 机制
- [活动]北京 PerlChina 七月聚会
- Windows系统变量及长短文件名
- 这个世界