前言
C#的数据类型分为两种,一种是值类型,一种是数据类型,从宏观上来看,感觉很重要的,并且很容易弄混,所以,这篇博客以值类型& 引用类型为主角,以对比的形式进行分析,并加以举例,下面咱们一起来走进他们的别具一格的世界。
分述
(一)栈和堆重温
值类型和引用类型的学习涉及到栈和堆的知识,在这里,咱们来回忆一下,什么是栈?什么是堆?详情请看之前的博客: 【C#之栈和堆初遇】
1.栈
编译期间就分配好的内存空间,因此代码中必须有栈的大小明确的定义;局部值类型变量、值类型参数等都在栈内存。
2.堆
程序运行期间动态分配的内存空间,可以根据程序的运行情况确定要分配堆内存得大小。
(二)值类型
1.定义
值类型:值存在栈上
2.类别
1.定义
引用类型 : 栈上存地址 堆上存值
2.类别
(四)对比
1.区别
A.导图先看
B.详细解说
· 将一个值类型变量赋给另一个值类型变量时,将复制包含的值
引用类型变量的赋值只复制对对象的引用,而不复制对象的本身
· 继承System.Value的类型都是值类型,其他的属于引用类型
· 值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType,值类型结构与引用类型相同的是,结构可以实现接口
· 值类型不可能包含null值,而引用类型可以
· 每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值
C.存储
D.适用
值类型:在内存管理方面具有更好的效率,适用于做存储数据的载体,但 不支持多态
引用类型:支持多态,适用 于定义应用程序行为。
总结
知识在不断的学习过程中,对于值类型和引用类型,在以后的学习中,会有更深的理解,有不对的地方希望大家指正!
标签:变量,C#,定义,vs,内存,类型,之值,引用 From: https://blog.51cto.com/u_15586641/5763790