看板 C_Sharp 關於我們 聯絡資訊
※ 引述《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