C#的两种数据类型延伸之三--struct和class
2011-01-06 16:19
393 查看
struct都能被class所代替, 那么为什么还要使用struct呢?存在即是合理的,struct在很多方面有着性能优势。让我们看看它们的主要区别在哪里?
数据类型不一样,struct是值类型,class是引用类型,因此它们具有所有值类型和引用类型之间的差异。由于堆栈的执行效率要比堆的执行效率高,但是堆栈资源却很有限,不适合处理逻辑复杂的大对象,因此struct常用来处理作为基类型对待的小对象,而class来处理某个商业逻辑。
从继承性来看,struct既不能继承也不能被继承,但是可以实现接口,而Class就可以完全扩展了。
内部结构有区别,struct只能添加带参的构造函数,不能使用abstract和protected等修饰符,不能初始化实例字段,但是值得注意的是,struct可以重写System.Object的3个虚方法,Equals()、ToString()和GetHashTable(),Class没有这些限制。
比较struct和class的不同,可以得出以下几条struct和class的使用原则:
1 在表示诸如点、矩形等主要用来存储数据的轻量级对象时,首选struct。
2 在表示数据量大、逻辑复杂的大对象时,首选class。
3 在表现抽象和多级别的对象层次时,class是最佳选择
http://blog.csdn.net/LOVESONGFOREVER/archive/2009/11/06/4775934.aspx
数据类型不一样,struct是值类型,class是引用类型,因此它们具有所有值类型和引用类型之间的差异。由于堆栈的执行效率要比堆的执行效率高,但是堆栈资源却很有限,不适合处理逻辑复杂的大对象,因此struct常用来处理作为基类型对待的小对象,而class来处理某个商业逻辑。
从继承性来看,struct既不能继承也不能被继承,但是可以实现接口,而Class就可以完全扩展了。
内部结构有区别,struct只能添加带参的构造函数,不能使用abstract和protected等修饰符,不能初始化实例字段,但是值得注意的是,struct可以重写System.Object的3个虚方法,Equals()、ToString()和GetHashTable(),Class没有这些限制。
比较struct和class的不同,可以得出以下几条struct和class的使用原则:
1 在表示诸如点、矩形等主要用来存储数据的轻量级对象时,首选struct。
2 在表示数据量大、逻辑复杂的大对象时,首选class。
3 在表现抽象和多级别的对象层次时,class是最佳选择
http://blog.csdn.net/LOVESONGFOREVER/archive/2009/11/06/4775934.aspx
相关文章推荐
- C#中的两种数据类型---值类型和引用类型
- c#中的两种数据类型--值类型和引用类型
- C#用socket和linux服务器通信,发送struct 类型数据
- c#中的两种数据类型--值类型和引用类型
- 用C#读取C/C++中struct数据类型生成的文件
- C#程序性能提升篇2 类型(字段类型、class和struct)的错误定义所影响性能浅析
- C# 程序性能提升篇-2、类型(字段类型、class和struct)的错误定义所影响性能浅析
- C# 之 结构体(struct)---复合类型的数据结构
- c#基础 01.2 结构类型struct与类class的异同
- C++中可以用struct和class来定义类型,这两种类型有什么区别
- 学点 C 语言(24): 数据类型 - 结构(struct)
- C# 关于数据类型转换
- c# 数据类型占用字节数
- C# 正则表达式验证数据类型
- C#可以为null的数据类型
- C# 自定义数据类型 数组应用 读取XML
- 二、C# 数据类型
- Flex进行数据类型判断:is typeof ObjectUtil.getClassInfo
- C# decimal 类型的数据小数点后的无效0去掉
- C#中Struct与Class的区别