知识大全 浅谈“值类型”和“引用类型”
Posted 类型
篇首语:历览千载书,时时见遗烈。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈“值类型”和“引用类型”相关的知识,希望对你有一定的参考价值。
工作已经有一年有余 做项目的时侯经常碰到值类型和引用类型 当时对这两个概念很难理解 今闲暇之时翻看红皮书 顿有所悟 和大家分享一下
从概念上区分 值类型直接存储其值 引用类型存储对值的饮用 按照存储位置上的不同 值类型存储在堆栈中 引用类型存储在托管堆上
下面用一个简单实例来说明两者的区别
代码
//i j 都是值类型
int i j;
i = ;
j = i;
Console WriteLine( i= + i);
j = ;
Console Write( i= + i);
Console ReadLine();
//结果
//i = ;
//i=
注 值类型的变量直接包含值 将一个值类型变量赋给另外一个值类型变量时 将复制包含的值 所以本实例中两个变量在内存的两个地方存储
代码
Rainless RLA RLB;
RLA = new Rainless();
RLA str = 改变前 ;
RLB = RLA;
Console WriteLine(RLA str);
RLB str = 改变后 ;
Console WriteLine(RLA str);
Console ReadLine();
//输出结果
//改变前
//改变后
注 和上面例子比较 同是把一个变量赋值给另外一个变量 可两者之间的区别就大了 Rainless是一个类 类属于引用类型 引用类型的赋值只复制对象的引用 而不对象本身 所以RLA和 RLB只是保留了一个引用 只是引用了同一个对象 因此对RLB的修改会影响RLA
下面说一下值类型和引用类型的组成部分
值类型主要有两类组成
· 结构
·枚举
结构分为下面几类
·Number(数值)类型
·Bool
·用户自定义的结构
其中数值类型又包括整数 浮点数 decimal
cha138/Article/program/net/201311/13110相关参考