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