[問題] passing parameters
我們知道在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)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章