任何人都可以解释如何在调用具有列表集合作为参数的方法时完成内存分配。由于下面的代码片段显然似乎结果相同,但不会产生相同的结果。 所以我想知道两种方法调用在内存分配方面的差异。列表集合对象作为方法参数
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