我有一个名为RegisteredItems的项目集合.我不关心RegisteredItems中项目的顺序,只关注它们是否存在.
我在RegisteredItems上执行两种类型的操作:
>按属性查找并退货.
>迭代收集并有副作用.
根据:When should I use the HashSet<T> type? Robert R.说,
“It’s somewhat dangerous to iterate over a HashSet because doing so
imposes an order on the items in the set. That order is not really a
property of the set. You should not rely on it. If ordering of the
items in a collection is important to you,that collection isn’t a
set.”
在某些情况下,我的收藏将包含50-100个项目.我意识到这不是大量的项目,但我仍然希望获得使用HashSet而不是List的回报.
我发现自己正在查看以下代码并想知道该怎么做:
LayoutManager.Instance.RegisteredItems.ToList().ForEach( item => item.DoStuff() ); vs foreach( var item in LayoutManager.Instance.RegisteredItems) { item.DoStuff(); }
RegisteredItems用于返回IList< T>,但现在它返回一个HashSet.我觉得,如果我使用HashSet提高效率,将它作为List进行转换是不合适的.然而,Robert的上述引言让我对迭代它感到不安.
在这种情况下,正确的呼叫是什么?谢谢