看一下以下程序:
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
该列表确实是“由ref传递”的,但是只有该sort
功能才能生效。以下语句myList = myList2;
无效。
所以输出实际上是:
10
50
100
您能帮我解释一下这种行为吗?如果确实myList
没有通过引用传递(因为它似乎myList = myList2
没有生效),那么如何myList.Sort()
生效?
我甚至假设该语句不生效,输出为:
100
50
10
ChangeList
返回aList<int>
而不是avoid
。