.net 里class 和struct的异同?

本文探讨了结构和类作为用户定义类型的特点与区别,包括构造函数、属性、方法、字段等共同点,以及结构体不支持继承、无法初始化实例字段、没有析构函数等不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结构是一种简单的用户定义类型,也是类的一种轻量级替代品;

相同点:

  1、类和结构都有构造函数、属性、方法、字段、操作符、嵌套类型和索引器;

  2、结构体也可以实现多个接口;

不同点:

  1、因为结构体是隐式密封的,所以不支持继承;

  2、结构体不能初始化实例字段

  3、结构体没有析构函数或默认的无参构造函数;

  4、如果我们不定义构造函数,CLR将初始化结构体,将所有成员置零;

    如果我们定义了非默认的构造函数,就不会发生CLR初始化;

    因此,我们必须显式的初始化结构体中的所有字段;

  5、结构体数组在内存使用方面效率更高;结构体集合会低些,因为结构体集合的元素应该是引用类型的,所以结构体必须进行装箱处理;

    而装箱和拆箱都是有开销的;

    所以,类在大的集合中更有效率;

转载于:https://www.cnblogs.com/xia_mi/archive/2011/04/28/2031355.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值