readonly修饰符在作祟
强化官方解释:
文字比较拗口,多读几次就能体会。
private readonly List<int> _testInt;
Program( List<int> testInt)
{
_testInt = testInt;
}
static void Main(string[] args)
{
ChangeReadonlyRef();
}
static void ChangeReadonlyRef()
{
var l = new List<int>{1};
var program = new Program(l);
Console.WriteLine($"testInt.Count= {program._testInt.Count()}");
l = new List<int>(); // l 变量重新指向。 但是 _testInt 还是指向原来的引用。
Console.WriteLine($"testInt.Count= {program._testInt.Count()}");
program._testInt = new List<int>(); //编译报错!!
}