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
最新推荐文章于 2026-04-01 02:58:32 发布
本文探讨了C#中struct与class的区别,包括它们的存储方式、继承特性、构造函数等,并讨论了在何种场景下更适合使用struct。
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印
开发板推荐:天空星STM32F407VET6开发板
超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

1900

被折叠的 条评论
为什么被折叠?



