作者phe (hmmm)
看板C_Sharp
标题[问题] passing parameters
时间Wed Jan 12 09:53:32 2005
我们知道在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)