可能重复:
通过 ref 传入对象
使用下面的代码,输出将是:
Without:
With:1
代码:
static void Main(string[] args)
{
var listWithoutRef = new List<int>();
WithoutRef(listWithoutRef);
Console.WriteLine("Without:" + string.Join(" ", listWithoutRef));
var listWithRef = new List<int>();
WithRef(ref listWithRef);
Console.WriteLine("With:" + string.Join(" ", listWithRef));
}
static void WithoutRef(List<int> inList)
{
inList = new List<int>(new int[] { 1 });
}
static void WithRef(ref List<int> inList)
{
inList = new List<int>(new int[] { 1 });
}
只看这个,我会说一个 List 在堆上,所以无论如何都是由 ref 传递的,所以它们应该是一样的?我误解了 ref 关键字吗?还是我错过了其他东西?