C#中Struct与Class区别

本文探讨了C#中Struct的特性和使用场景,对比了Struct与Class的区别,特别是传值方式的不同及其对效率的影响。作者还讨论了Struct在实际应用中的必要性和争议。

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

根据C# programming reference给出来信息,Struct实质上还是用来实现轻量级别的类派用处的,这就意味着它还是可以有属性,方法(函数)以及标签等,唯一的区别在于,Struct在编程的时候不能由程序员申明构造函数,即使是默认(不带参数)的构造函数,同样也不能有析构的处理部分。这是因为Struct的构造函数是由编译器自动生成的。并且Struct的用途是那些描述轻量级的对象,例如Line,Point等,并且效率比较高。
 
偶觉得郁闷的倒不是答错题不能够通过面试。而是认为个人觉得这个Struct实在没有必要存在于C#的语言中。为什么呢?因为,类能够完全替代Struct的行为,唯一影响效率的问题在于,Struct是以传值的方式来传递的,而Class是以引用的方式来传递的。所以有人会说啦,如果系统中存在大量轻量级的对象,你就可以用Struct啦,那样效率高很多,我认为是脑子被牛踩过才会想出来这样的设计,你想,一个系统要是能够轻量级的对象多到影响效率的地步,那么就该好好考虑一下重新作设计。更何况,编译器还是会给构造函数于Struct的,因此,个人认为即使编译时刻它也没啥优势。
 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值