黑马程序员技术交流社区

标题: 值类型和引用类型问题 [打印本页]

作者: 崔增阳    时间: 2014-3-24 17:50
标题: 值类型和引用类型问题
本帖最后由 崔增阳 于 2014-3-25 19:13 编辑

按值传递引用类型和按引用传递引用类型有什么区别 能不能举个例子?

作者: mdb    时间: 2014-3-24 18:08
在进行数据操作时,对于值类型,由于每个变量都有自己的值,
因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这
个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保
存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。
简单的测试
  1. public static void testfun()
  2.         {
  3.             ac a1 = new ac();
  4.             a1.name = "a1";
  5.             ac a2 = a1;
  6.             a2.name = "a2";
  7.             Console.WriteLine(a1.name + " " + a2.name);

  8.             sj s1 = new sj();
  9.             s1.name = "s1";
  10.             sj s2 = s1;
  11.             s2.name = "s2";
  12.             Console.WriteLine(s1.name + " " + s2.name);
  13.         }
  14.         public class ac
  15.         {
  16.             public string name { get; set; }
  17.         }
  18.         public struct sj { public string name;}
复制代码

输出结果是:
a2 a2
s1 s2
因为ac类是引用类型,所以修改a2的时候a1的也被修改了,其实修改的对像是同一个,而sj是结构体,结构体是值类型,所以修改了s2,s1的值并没有被修改。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2