在最新版本的 Iesi.Collections 中缺少 Iesi.Collections.Generic.ISet。似乎有三种选择:
- 链接哈希集
- 只读集
- 同步集
Iesi.Collections.Generic.ReadOnlySet 似乎是最接近 ISet 的,并且文档指出:
... although it's advertised as immutable it really isn't.
Anyone with access to the wrapped set can still change the set.
似乎 ReadOnlySet 是 ISet 的最佳替代品?目前,实现是通过公共方法将项目添加到集合中,因此它似乎是最合适的。替代品(IList,bag?)似乎需要更多资源或不那么快速/高效)?有更好的选择吗?(列表不应有重复,可手动验证)
我会做这样的事情:
public virtual ISet<MyClass> MyClass
{
get { return this.myClass }
}
public virtual void AddItem(MyClass item)
{
... // Null checks and initialize ISet if null
myClass.Add(item)
}
基本上它归结为替代方案,是否有没有负面影响的替代方案,例如速度等?