以下是示例代码:Readonly扩展不适用于引用类型集合.如果我将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);
}
Run Code Online (Sandbox Code Playgroud)
A ReadOnlyCollection可防止修改集合中的引用.它不会阻止对引用对象的修改.如果你有ReadOnlyCollection<string>,你不能改变任何东西,因为string是不可变的.你的Employee班级是可变的,可以改变.
因此,显而易见的解决方案是使Employee不可变.使属性只读,并在构造函数中初始化它们.
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |