Regardez le programme suivant:
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;
}
}
Je suppose myList
serait passé à côté de ref, et la sortie
3
4
La liste est en effet "adoptée par le ref", mais seulement l' sort
fonction prend effet. La déclaration suivante myList = myList2;
n'a pas d'effet.
Si la sortie est en fait:
10
50
100
Pouvez-vous m'aider à expliquer ce comportement? Si, en effet, myList
n'est pas passé par ref (tel qu'il apparaît à partir de myList = myList2
ne s'applique pas), comment est - myList.Sort()
prendre effet?
J'ai été en supposant même que la déclaration ne prennent pas effet et la sortie:
100
50
10