struct和class有一个很大的区别:struct是值类型,存储在堆栈上;class是引用类型,存储在托管堆上。class支持继承,可以继承自类和接口;而struct没有继承性,struct不能从class继承,也不能作为class 的基类。class可以声明无参构造函数,可以声明析构函数;而 struct 只能声明带参数构造函数,且不能声明析构函数。实例化时,class 要使用new 关键字;而struct可以不使用 new关键字,如果不以 new来实例化struct,则其所有的字段将处于未分配状态,直到所有字段完成初始化,否则引用未赋值的字段会导致编译错误。
从职能观点来看,class表现为行为;而struct 常用于存储数据。使用class基本可以替
代struct 的任何场合,class后来居上。虽然在某些方面 struct有性能方面的优势,但是在面向对象编程里,基本是class 横行的天下。既然class 几乎可以完全替代struct 来实现所有的功能,那么 struct还有存在的必要吗?答案是,至少在以下情况下,鉴于性能上的考虑,我们应该考虑使用struct 来代替class:实现一个主要用于存储数据的结构时,可以考虑struct。结构数组具有更高的效率。
本篇力荐struct数组来存储数据,本人做过实时控制系统,其中大量用到结构数组,因为考虑到高效,我们不能将数据放在数据库中,而是将数据放在内存中,然后又考虑用struct还是class来存储数据,最后根据性能上的比较最终struct胜出。
(注意:struct是值类型,我们对于struct或者结构数据或者普通数组将其作为参数传递时请用ref进行引用传递)
今日c#性能优化明星:struct.
优化指数:90
第七篇:struct和class
最新推荐文章于 2024-08-27 11:59:38 发布