4
以下是示例代码: 只读扩展不适用于引用类型集合。如果我将员工更改为字符串,那么它将起作用。 有人可以解释为什么我得到这种行为。IList <T> .AsReadOnly扩展方法不适用于引用类型集合
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);
}
Thanks.Got it.so asreadonly()扩展方法只防止COUNT如果对象是可变的。 – mahalingam 2012-02-29 10:05:31
@mahalingam只读集合不能添加,删除或**交换**;例如,你可以做一个可变集合'list [24] = anotherValue;' - 你不能用只读集合来做到这一点。所以它不只是数量。 – 2012-02-29 10:21:05
不仅是元素的数量,还有对单个元素的引用:即使不会更改Count,您也不能执行readonlyEmp [0] = new Employee();'。 – 2012-02-29 10:22:04