Re: [問題] reference1變數儲存..

看板C_Sharp (C#)作者 (.....)時間18年前 (2007/11/07 13:24), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串6/6 (看更多)
※ 引述《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

11/07 14:06, , 1F
會放到不同地方。之前的會被回收掉。
11/07 14:06, 1F

11/07 14:07, , 2F
所以有大量字串處理賦值時最好不要用string免得爆效能
11/07 14:07, 2F

11/07 14:31, , 3F
那看來我觀念沒錯..那主問題的Member Data應該是同一個囉?
11/07 14:31, 3F

11/07 22:44, , 4F
補充說明一下 XD..剛剛查到MemberData是不同的
11/07 22:44, 4F
文章代碼(AID): #17CKm2jj (C_Sharp)
文章代碼(AID): #17CKm2jj (C_Sharp)