gpt4 book ai didi

c# - IList.AsReadOnly 扩展方法不适用于引用类型集合

转载 作者:太空狗 更新时间:2023-10-30 00:26:48 25 4
gpt4 key购买 nike

示例代码如下:只读扩展不适用于引用类型集合。如果我将 Employee 更改为字符串,那么它将起作用。有人可以解释为什么我会出现这种行为。

        List<Employee> Emps = new List<Employee>(2)
{
new Employee(){EmpName="E1",Year=2012,EmpID=1},
new Employee(){EmpName="E2",Year=2012,EmpID=2}
};
Emps.ForEach(emp => Debug.WriteLine(emp.EmpName));
**IList<Employee> readonlyEmp = Emps.AsReadOnly();
readonlyEmp[0].EmpName = "EMPUpdated";**
foreach (var emp in readonlyEmp)
{
Debug.WriteLine(emp.EmpName);
}

最佳答案

A ReadOnlyCollection防止修改集合中的引用。它不会阻止对引用对象的修改。如果你有 ReadOnlyCollection<string> , 你不能改变任何东西,因为 string是不可变的。你的Employee类是可变的,可以更改。

所以显而易见的解决方案是制作Employee不可变的。将属性设置为只读并在构造函数中对其进行初始化。

关于c# - IList<T>.AsReadOnly 扩展方法不适用于引用类型集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9496808/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com