Schauen Sie sich folgendes Programm an:
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;
}
}
Ich nahm an myList
, dass vorbei ref
gegangen wäre, und die Ausgabe würde
3
4
Die Liste wird zwar "von ref übergeben", aber nur die sort
Funktion wird wirksam. Die folgende Aussage myList = myList2;
hat keine Wirkung.
Die Ausgabe ist also tatsächlich:
10
50
100
Können Sie mir helfen, dieses Verhalten zu erklären? Wenn es tatsächlich myList
nicht von ref übergeben wird (wie es scheint, wenn es myList = myList2
nicht wirksam wird), wie wird myList.Sort()
es wirksam?
Ich ging davon aus, dass selbst diese Aussage nicht wirksam wird und die Ausgabe wie folgt lautet:
100
50
10
ChangeList
, eine zurückzugeben,List<int>
anstatt eine zu sein,void
wenn tatsächlich eine neue Liste erstellt wird.