比如说,我们有一个带有私有 List 的泛型类。我们至少可以通过两种方式让它返回这个列表的只读包装器:
public class Test<T>
{
public List<T> list = new List<T>();
public IEnumerable<T> Values1
{
get
{
foreach (T i in list)
yield return i;
}
}
public IEnumerable<T> Values2
{
get
{
return list.AsReadOnly();
}
}
}
两者都Values1
反映Values2
基础集合中的任何变化,并防止它通过自身进行修改。
哪种方式更可取?应该注意什么?或者有没有其他更好的方法?