A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔增阳 中级黑马   /  2014-3-24 17:50  /  972 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔增阳 于 2014-3-25 19:13 编辑

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

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

1 个回复

倒序浏览
在进行数据操作时,对于值类型,由于每个变量都有自己的值,
因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这
个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保
存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。
简单的测试
  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的值并没有被修改。

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马