[問題] passing parameters

看板C_Sharp (C#)作者 (hmmm)時間20年前 (2005/01/12 09:40), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/2 (看更多)
我們知道在C# 當我們傳參數到一個method時, 若傳的參數是value type, 則他會在method中有個temporary copy, 所以我們若是想要真正的改變傳 進去的參數值一定要加ref這個modifier. 那請問各位, reference type的狀況到底是如何? 我自己寫了幾個不同的傳reference type的method來測試, 可是還是不太 懂他的機制, 請各位解惑一下 private static void Entrance(ArrayList a1, ArrayList a2, ref ArrayList a3) { ArrayList local = new ArrayList(); a1.Add(2); a1.Add(3); local.Add(3); local.Add(4); a2 = local; a3 = local; } static void Main(string[] args) { ArrayList a1 = new ArrayList(), a2 = new ArrayList(), a3 = new ArrayList(); Entrance(a1, a2, ref a3); } 結果 a1 2,3 a2 沒東西 a3 3,4 根據a2, a3的結果我推論reference type也是傳一個copy進去, 但是如果是這樣的話, 那a1也應該是空的, 但結果a1中有兩個element 有人可以幫我解答這問題嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.109.235.41 ※ 編輯: phe 來自: 140.109.235.41 (01/12 09:54)
文章代碼(AID): #11v80810 (C_Sharp)
文章代碼(AID): #11v80810 (C_Sharp)