第七篇:struct和class

  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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值