ดูโปรแกรมต่อไปนี้:
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จะส่งคืนList<int>แทนที่จะเป็นvoidหากเป็นการสร้างรายการใหม่ในความเป็นจริง