Aşağıdaki programa bir göz atın:
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;
}
}
Ben kabul myList
geçebilirdi ref
ve çıkış alacaktı
3
4
Liste gerçekten "ref tarafından aktarılır", ancak yalnızca sort
işlev etkili olur. Aşağıdaki ifadenin myList = myList2;
hiçbir etkisi yoktur.
Yani çıktı aslında:
10
50
100
Bu davranışı açıklamama yardım eder misin? Gerçekten Eğer myList
edilmez geçti-by-ref (ondan göründüğü gibi myList = myList2
etkili olmuyor), nasıl myList.Sort()
etkinlesmesi?
Bu ifadenin bile etkili olmayacağını ve çıktının şöyle olacağını varsayıyordum:
100
50
10
ChangeList
aList<int>
olmaktan çok a döndürmek en iyisi gibi görünüyorvoid
.