假设我们有一个带有私有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
都反映了基础集合中的任何更改,并通过它们自己防止其修改。
哪种方式更可取?有什么需要注意的事项吗?还是有其他更好的方法吗?
return list.Select(x => x);
。 - Guillaume