文章目录
C#中结构体跟类的区别
第一点 存储空间
结构体跟类最大的区别在于存储空间,结构体是值,存在栈上,类是引用,存在堆上。
第二点 特性
面向对象思想中有三大特性,封装,继承,多态,结构体具备封装的特性,但不具备继承,多态的特性。
第三点 初始值
结构体成员变量申明不能指定初始值,而类可以
第四点 protected访问修饰符
结构体成员不能使用protected访问修饰符
如图
第五点 无参构造函数
结构体中不能申明无参的构造函数,而类可以
如图
第六点 有参构造函数
在类中申明有参构造函数后,无参构造函数会被顶掉,如果想使用无参构造函数,必须重写无参构造函数
如图
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a79b11052b44251969aad7438c62e85.png
可以看到我们在Class1中写了一个有参的构造函数,就不能使用无参构造函数了,必须重写一个无参构造函数
结构体中申明有参构造函数后,无参构造不会被顶掉
第七点 析构函数
结构体中不能申明析构函数,而类可以
如图
第八点 继承
结构体不能被继承,而类可以
如图
第九点 初始化
结构体需要在构造函数中初始化所有成员变量,而类随意
如图
第十点 静态
结构体不能被静态static修饰,而类可以
如图
第十一点内部申明自己
结构体不能在内部申明和自己一样的结构体变量,而类可以
如图