【发布时间】:2019-12-19 23:22:49
【问题描述】:
我有一个私有的HashSet<string>,它是一个只读属性的支持字段,它应该返回一个只读集合,这样调用者就不能修改集合。所以我尝试:
public class MyClass
{
private readonly HashSet<string> _referencedColumns;
public ICollection<string> ReferencedColumns {
get { return new ReadOnlyCollection<string>(_referencedColumns); }
}
这不会编译为 ReadOnlyCollection 接受 IList<T> 不是由 HashSet<T> 实现的。是否有另一个包装器可以用来让我免于复制项目?就我的目的而言,只需返回由HashSet<T> 实现的实现ICollection<T>(而不是IList<T>)的东西就足够了。
【问题讨论】:
-
如果调用者不能修改返回很重要,请查看Immutability and ReadOnlyCollection<T>,也许[这个问题(stackoverflow.com/questions/285323/…)
标签: c# base-class-library