结构和类的区别?二者分别在什么情况下使用?

类和结构有什么区别?二者什么情况下使用?

在学习结构的时候,发现结构和类有很多相似之处,比如:都是使用new关键字来实例化、都有成员变量、成员方法和属性。但是他们肯定是不一样的两个东西,所以查阅的大量的资料将这个知识点总结出来,让更多的读者都能受益匪浅。

相同之处:

1、都有成员变量、成员方法、构造函数

2、类中的成员结构都可以定义(除析构函数外)

不同之处:

​ 1、声明时的关键字不同,结构是 struct ,而类是 class

​ 2、结构是值类型,存储在栈中,类是引用类型,存储在托管堆中,结构在声明的时候就已经为其分配栈上的内存了,而类需要用new为其分配堆上的内存。

​ 3、结构是隐式密封的,不能使用 sealed (只能在当前项目中访问,不能继承只能实例化)abstract (只能在当前项目中访问,不能实例化只能继承) 修饰符,结构体不能被继承,所以在调用结构方法时不需要查找 vtable 虚函数继承表,类可以被继承。

​ 4、结构中的实例字段只能声明不能赋值,而类没有限制。结构只声明没有用 new 进行初始化时,可以给它的实例字段直接赋值,而类不行。
在这里插入图片描述

​ 5、结构没有析构函数,结构中的方法不能用 virtualabstract 修饰符,但是可以用 override 修饰,用来重写父类的方法。

​ 6、结构不能显示给出默认构造函数(无参构造函数),无论有没有自定义构造,默认构造都隐式存在,而类中有自定义的构造函数时,默认构造会被隐藏,想要调用默认构造,必须显示给出默认构造。
在这里插入图片描述

​ 7、结构可以使用属性,但是属性和构造函数不能同时存在。

​ 8、结构的自定义构造函数必须初始化所有的实例字段和没有初始化的非静态属性,类没有限制。
在这里插入图片描述

结构和类的使用场景:

结构的使用场景:

1、结构是值类型在栈中,栈的存取速度比堆快,但是容量小,适合轻量级的对象,比如点、矩形、颜色

2、如果需要描述少量字段,不需要继承,就用结构

3、在变量传值的时候,希望传递对象的是拷贝,而不是对象的引用地址,这个时候就可以使用结构

类的使用场景:

1、类是引用类型,存储在托管堆中,托管堆的容量大,适合重量级的对象

2、如果需要描述大量字段,又比较抽象,需要继承,就用类

以上是个人在学习c#结构中的一些知识点的总结,有些地方难免会有一些瑕疵,还是希望各位IT大佬能够指出我的错误,欢迎大家的指正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值