知识大全 浅谈“值类型”和“引用类型”

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

相关参考