C#-----值类型引用类型

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Yue510/article/details/82936332

值类型和引用类型
C#中的变量可以划分为值类型(Value Type)和引用类型(Reference)两种:
值类型:简单类型、结构类型、枚举类型
引用类型:类、数组、接口。
值类型转为引用类型称成为装箱,引用类型转为值类型称为拆箱。
在这里插入图片描述
值类型的值存在栈上,栈上存的是地址,值在堆上。

在这里插入图片描述
堆和栈的区别?
栈是编译期间就分配好的内存空间,因此你的代码众必须就栈的大小有明确的定义;局部值类型变量、值类型参数等都在栈内存中。
堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确定要分配的堆内存的大小。

值类型和引用类型的区别?
1)将一个值类型变量赋给另一个值类型变量时,将复制包含的值。引用类型变量的赋值只复制对对象的引用,而不复制对象本身。
2)值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口。
3)值类型不可能包含null值。
4)每种值类型均有一个隐式的默认构造函数来初始化该函数的默认值。

类和结构对于构造函数的区别?

类中默认的有一个无参数的构造函数。
当在类中写一个有参数的构造函数,默认无参数的构造函数被取消了。
类中写构造函数参数列表中参数个数可以不确定。
结构
在结构中默认的也有一个无参数的构造函数。
当在结构中写一个有参数的构造函数,默认的无参数的构造函数还有,没有取消。
在结构中写构造函数,要把所有的字段都要完全赋值。

猜你喜欢

转载自blog.csdn.net/Yue510/article/details/82936332