【C#之值类型vs引用类型】

前言

C#的数据类型分为两种,一种是值类型,一种是数据类型,从宏观上来看,感觉很重要的,并且很容易弄混,所以,这篇博客以值类型& 引用类型为主角,以对比的形式进行分析,并加以举例,下面咱们一起来走进他们的别具一格的世界。

分述

(一)栈和堆重温

值类型和引用类型的学习涉及到栈和堆的知识,在这里,咱们来回忆一下,什么是栈?什么是堆?详情请看之前的博客: 【C#之栈和堆初遇】

1.栈

编译期间就分配好的内存空间,因此代码中必须有栈的大小明确的定义;局部值类型变量、值类型参数等都在栈内存

2.堆

程序运行期间动态分配的内存空间,可以根据程序的运行情况确定要分配堆内存得大小。

(二)值类型

1.定义

值类型值存在栈上

2.类别

 (三)引用类型

1.定义

引用类型 : 栈上存地址   堆上存值

2.类别


(四)对比

1.区别

A.导图先看
B.详细解说
· 将一个值类型变量赋给另一个值类型变量时,将复制包含的值
引用类型变量的赋值只复制对对象的引用,而不复制对象的本身
· 继承System.Value的类型都是值类型,其他的属于引用类型
· 值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType,值类型结构与引用类型相同的是,结构可以实现接口
· 值类型不可能包含null值,而引用类型可以
· 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值
C.存储
D.适用
值类型:在内存管理方面具有更好的效率,适用于做存储数据的载体,但 不支持多态
        引用类型:支持多态,适用 于定义应用程序行为。

         

总结

知识在不断的学习过程中,对于值类型和引用类型,在以后的学习中,会有更深的理解,有不对的地方希望大家指正!
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值