黑马程序员技术交流社区
标题:
还在纠结于引用类型,求详解
[打印本页]
作者:
李后量
时间:
2012-6-25 15:05
标题:
还在纠结于引用类型,求详解
class Program
{
class C
{
public int Value = 0;
}
static void Main(string[] args)
{
int v1 = 0;
int v2 = v1;
v2 = 927;
C r1 = new C();
C r2 = r1; //可能就这句话理解错了,哪位给解释下啊
r2.Value = 112;
Console.WriteLine("Values:{0},{1}",v1,v2);
Console.WriteLine("Refs:{0},{1}",r1.Value,r2.Value);
Console.ReadLine();
}
}
复制代码
那个值类型的结果可以理解,但那个引用类型的结果我不是很理解,哪位给解释下呀
33.jpg
(3.32 KB, 下载次数: 114)
下载附件
2012-6-25 15:04 上传
作者:
平建
时间:
2012-6-25 15:58
C r1 = new C(); 你实例化类C 那么,里面定义的 public int Value = 0; 所以r1的值是0;
C r2 = r1; 目前 r1的值是0;你把0赋值给 r2,所以r2=0.
r2.Value = 112; 下面我就不解释了
作者:
许庭洲
时间:
2012-6-25 16:12
C r2 = r1; //引用传的是地址,由于r2的值是112,并且r1与r2的地址相同,所以程序输出结果一样
作者:
黑马龙超
时间:
2012-6-25 17:38
C r2 = r1; 这句话的意思就是,把r1的引用赋值给r2,也就是说,让r2这个变量指向r1指向的那个对象
就相当于一个人把风筝的线拿给另外一个人一起牵
此后,r2和r1两个变量同时指向相同的一个对象,一个变量改变这个对象,会反映到另一变量上。
r2.Value的值被赋值了,意思是指向的这个共同对象的value变了,那么不管通过那个变量来取这个对象的value值,都是这个改变了的值,r1也不例外。
作者:
朱永恒
时间:
2012-6-25 17:49
C r1 = new C()创建一个 C类型的实例对象 r1 再声明个C类型 r2 变量 r2=r1意思是r2指向r1对象 所以可以理解为他们为同一个对象,所以他们输出的值相同
作者:
李嫒
时间:
2012-6-25 18:02
C r1 = new C()创建一个 C类型的实例对象 r1 ,在定义一个C类型的的实例对象r2,r2指向r1,也就是r1与r2公用一个地址,现在给r2赋值,也就是将这个值放入它指向的地址,所以,r1的值也是这个。
作者:
黑马-许泽宇
时间:
2012-6-27 12:52
引用就和指针差不多的道理。指向的直接是地址。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2