作者ChienFu (.....)
看板C_Sharp
标题Re: [问题] reference1变数储存..
时间Wed Nov 7 13:24:17 2007
※ 引述《tomex (tomex_ou)》之铭言:
: Reference变数可以直接使用即可
: 你皆可把它们想像是同一个
: 唯一例外是把它当function的参数时
: 它是被复制的!
: ClassA a = new ClassA();
: ClassA b = a;
: void MyMethod(ClassA b1) //这儿的b1与上面的b是不同的,其l-value位置不同,
: { //但它们的r-value都是指定a的位置。
: b1 = new ClassA(); // b1指定另一新位置
: {
: bool isEqual = (b==b1); //False
: 上例要达到同一位置,就是用ref这关键字。
一个reference复制的问题..跟这个讨论串算是相关延伸
所以想说接着问 希望能得到解答..
Reference Type被当成function的参数时是被复制一份的
如果ClassA b1有个Member data也是Referece Type
那function里的Member data是同一个还是也是被复制一份?
问题好像有点虚@@...
再补一个观念问题好了
像String这种reference type在重新赋值的时候
例如 strTest = "Hello World";
C#是直接把"Hello World"放到strTest所reference位置;
还是重新把strTest reference到不同地方?
希望各位先进不吝於问题简单帮忙回答一下...
不然推荐一下有解释这种基本问题的书籍也可以...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.116.72.1
1F:→ FantasyRyu:会放到不同地方。之前的会被回收掉。 11/07 14:06
2F:→ FantasyRyu:所以有大量字串处理赋值时最好不要用string免得爆效能 11/07 14:07
3F:→ ChienFu:那看来我观念没错..那主问题的Member Data应该是同一个罗? 11/07 14:31
4F:→ ChienFu:补充说明一下 XD..刚刚查到MemberData是不同的 11/07 22:44