任何人都可以解釋如何在調用具有列表集合作爲參數的方法時完成內存分配。由於下面的代碼片段顯然似乎結果相同,但不會產生相同的結果。 所以我想知道兩種方法調用在內存分配方面的差異。列表集合對象作爲方法參數
using System;
using System.Collections.Generic;
namespace ListSample
{
class ListSampleClass
{
static void Main(string[] args)
{
List<int> i = new List<int>();
i.Add(10);
i.Add(15);
SampleMethod1(i);
Console.WriteLine("Result of SampleMethod1:"+i[0]);
SampleMethod2(i);
Console.WriteLine("Result of SampleMethod2:" + i[0]);
Console.ReadKey();
}
public static void SampleMethod1(List<int> i)
{
List<int> j = new List<int>();
j.Insert(0,20);
i = j;
}
public static void SampleMethod2(List<int> i)
{
List<int> j = new List<int>();
j = i;
j.Insert(0, 20);
}
}
}
感謝您的快速響應,如果是這樣,那麼不應該SampleMethod2()也給我與SampleMethod1()相同的結果? – Ardentaj 2010-12-19 09:19:51
@Ardentaj:No - 調用'SampleMethod1'對傳入的列表沒有* nothing,因爲在方法中創建的列表上調用了'Insert'方法。 'SampleMethod2'會將值插入到傳入的列表中。 – 2010-12-19 09:22:19
感謝Jon ...我會通讀你的文章,並且你會建議任何可用的內存分析器,以便我可以分配內存分配 – Ardentaj 2010-12-19 09:28:36