作者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
→ FantasyRyu:會放到不同地方。之前的會被回收掉。 11/07 14:06
→ FantasyRyu:所以有大量字串處理賦值時最好不要用string免得爆效能 11/07 14:07
→ ChienFu:那看來我觀念沒錯..那主問題的Member Data應該是同一個囉? 11/07 14:31
→ ChienFu:補充說明一下 XD..剛剛查到MemberData是不同的 11/07 22:44