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

本文深入探讨C#中的值类型与引用类型的特性,包括它们的存储方式、转换机制及构造函数的区别,帮助读者理解类型系统的核心概念。

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

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

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

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

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

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值