Lihat program berikut:
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;
}
}
Saya berasumsi myList
akan berlalu ref
, dan hasilnya akan
3
4
Daftar ini memang "disahkan oleh ref", tetapi hanya sort
fungsi yang berfungsi. Pernyataan berikut myList = myList2;
tidak berpengaruh.
Jadi outputnya sebenarnya:
10
50
100
Bisakah Anda membantu saya menjelaskan perilaku ini? Jika memang myList
tidak lewat-oleh-ref (seperti yang tampak dari myList = myList2
tidak berlaku), bagaimana myList.Sort()
efeknya?
Saya bahkan mengasumsikan pernyataan itu tidak berlaku dan hasilnya adalah:
100
50
10
ChangeList
mengembalikan aList<int>
daripada menjadivoid
jika sebenarnya membuat daftar baru.