请看以下程序:
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
会被按引用传递,输出结果会是
3
4
列表确实是“传引用”的,但只有sort
函数会产生影响。以下语句myList = myList2;
没有任何效果。因此,实际输出结果为:
10
50
100
你能帮我解释一下这种行为吗?如果确实 myList
不是按引用传递的(从 myList = myList2
似乎是这样),那么 myList.Sort()
是如何生效的?
我曾经认为即使执行了那个语句也不会生效,输出应该是:
100
50
10
ChangeList
实际上创建了一个新列表,似乎最好让它返回一个List<int>
而不是void
。 - Jeff B