0


C# 中结构体与类的区别,值类型一定存放在栈上么?

结构体与类的区别

1:结构体是值类型 栈中分配空间,自定义类是引用类型堆中分配空间,栈中保存的只是引用

2:一个用struct 关键字 一个使用new 关键字

3:结构体有一个隐式的构造函数并且是不能重写的无参数构造函数,任何时候都会存在。没有析构函数

结构体的new 其实只是初始化,在这个无参数的隐式构造函数中必须给参数赋值,值类型的字段赋值0,给引用类型的字段赋值nul 或者直接为字段赋值

4:在结构体中声明的字段是不能给初始值的

严格来说类也是不能有初始值的,但是微软在构造函数中做了赋值这一步操作,把我们定义变量的赋值在构造函数中重新赋值一次

5:结构体不能从另一个结构体或者类继承但是可以实现接口

结构是值类型,直接包含它自己的数据,每个结构都保存自己的一份数据,修改每一个结构的数据都不会对其他结构的数据造成影响

那么为什么结构体是值类型呢?

其实就是因为结构体的new 不是new一个对象而是调用隐式构造函数给变量赋值

什么时候用结构体什么时候用类?

因为结构体是值类型存在栈上,存储速度快因此,数据量较小的纯数据类型适合用结构体

一般只有简单的数据没有复杂的实现方法和继承关系的时候用结构体

值类型一定存放在栈上么?

类里面定义的值类型的变量在new 一个新对象的时候其实是存放在堆内存的

标签: c# unity

本文转载自: https://blog.csdn.net/qq_30585525/article/details/118937481
版权归原作者 做做游戏而已 所有, 如有侵权,请联系我们删除。

“C# 中结构体与类的区别,值类型一定存放在栈上么?”的评论:

还没有评论