C#的两种数据类型延伸之三--struct和class

struct都能被class所代替, 那么为什么还要使用struct呢?存在即是合理的,struct在很多方面有着性能优势。让我们看看它们的主要区别在哪里?

  • 数据类型不一样,struct是值类型,class是引用类型,因此它们具有所有值类型和引用类型之间的差异。由于堆栈的执行效率要比堆的执行效率高,但是堆栈资源却很有限,不适合处理逻辑复杂的大对象,因此struct常用来处理作为基类型对待的小对象,而class来处理某个商业逻辑。
  • 从继承性来看,struct既不能继承也不能被继承,但是可以实现接口,而Class就可以完全扩展了。
  • 内部结构有区别,struct只能添加带参的构造函数,不能使用abstractprotected等修饰符,不能初始化实例字段,但是值得注意的是,struct可以重写System.Object3个虚方法,Equals()ToString()GetHashTable()Class没有这些限制。

比较structclass的不同,可以得出以下几条structclass的使用原则:

1 在表示诸如点、矩形等主要用来存储数据的轻量级对象时,首选struct

2 在表示数据量大、逻辑复杂的大对象时,首选class

3 在表现抽象和多级别的对象层次时,class是最佳选择

 

http://blog.csdn.net/LOVESONGFOREVER/archive/2009/11/06/4775934.aspx

posted @ 2011-01-06 16:19  Further  阅读(406)  评论(0编辑  收藏  举报