看看下面的程序:
class Test
{
List<int> myList = new List<int>();
public void TestMethod()
{
myList.Add(100);
myList.Add(50);
myList.Add(10);
ChangeList(myList);
foreach (int i in myList)
{
Console.WriteLine(i);
}
}
private void ChangeList(List<int> myList)
{
myList.Sort();
List<int> myList2 = new List<int>();
myList2.Add(3);
myList2.Add(4);
myList = myList2;
}
}
我以为myList
会经过ref
,输出将
3
4
该列表确实是“通过引用传递”,但只有sort
功能生效。以下声明myList = myList2;
没有影响。
所以输出实际上是:
10
50
100
你能帮我解释一下这种行为吗?如果确实myList
is not 通过引用(从看来myList = myList2
不生效),怎么办myList.Sort()
生效吗?
我什至假设该声明不会生效,并且输出为:
100
50
10
最初,它可以用图形表示如下:
Then, the sort is applied myList.Sort();
最后,当你这样做时:myList' = myList2
,您丢失了参考文献,但没有丢失原始文献,并且集合保持排序。
如果您通过引用使用(ref
) then myList'
and myList
将变得相同(只有一个参考)。
注:我用的是myList'
代表您使用的参数ChangeList
(因为你给的名字和原来的名字一样)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)