private void test(List<int> p)
{
if (p.Count > 2)
p[2] = 666;
}
private void test1(ref List<int> p)
{
if (p.Count > 2)
p[2] = 888;
}
List<int> a = new List<int>();
a.Add(1);
a.Add(2);
a.Add(3);
List<int> b = new List<int>();
b.Add(4);
b.Add(5);
b.Add(6);
Console.WriteLine($"a2:{a[2]}");
Console.WriteLine($"b2:{b[2]}");
a = b;
Console.WriteLine($"a2:{a[2]}");
Console.WriteLine($"b2:{b[2]}");
a[2] = 100;
Console.WriteLine($"a2:{a[2]}");
Console.WriteLine($"b2:{b[2]}");
test(a);
Console.WriteLine($"a2:{a[2]}");
Console.WriteLine($"b2:{b[2]}");
test1(ref a);
Console.WriteLine($"a2:{a[2]}");
Console.WriteLine($"b2:{b[2]}");
结果如下:
a2:3
b2:6
a2:6
b2:6
a2:100
b2:100
a2:666
b2:666
a2:888
b2:888
修改A的值后,b进行了同步的更改。因此,可得知C#中List的赋值是引用类型的。