我有一个私有的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>
并没有实现该接口。是否有其他包装器可用以避免复制项目?对于我的目的来说,只需返回实现ICollection<T>
(而不是IList<T>
)的某些内容即可,而HashSet<T>
已经实现了该接口。