我经常需要一组带有数字标识符的非顺序对象。我喜欢为此使用KeyedCollection,但我认为有一个严重的缺点。如果您使用int作为键,您将无法再通过索引访问集合的成员(collection[index]现在实际上是collection[key])。这是一个足以避免使用int作为键的严重问题吗?更好的选择是什么?(也许是int.ToString()?)我以前做过这个没有任何大问题,但最近我遇到了一个讨厌的障碍,如果key是一个int,针对KeyedCollection的XML序列化不工作,由于abugin.NET. 最佳答案 基本
我有一个类(SomeClass),它包含string类型的属性Name。我需要存储该类的数组并按名称查找其项。为此,有两种类型的集合:KeyedCollection和Dictionary。我的问题是:它们之间有什么区别,在这种情况下最好使用KeyedCollection和Dictionary?感谢您在解释方面的帮助。 最佳答案 之前的评论都没有解决两者之间最重要的区别:KeyedCollection按照添加的顺序保存您的项目(第一个添加的项目位于索引0,最后添加的位于最后一个索引)。字典不会(或者至少永远不会保证这样做)。Keyed
我有一个类(SomeClass),它包含string类型的属性Name。我需要存储该类的数组并按名称查找其项。为此,有两种类型的集合:KeyedCollection和Dictionary。我的问题是:它们之间有什么区别,在这种情况下最好使用KeyedCollection和Dictionary?感谢您在解释方面的帮助。 最佳答案 之前的评论都没有解决两者之间最重要的区别:KeyedCollection按照添加的顺序保存您的项目(第一个添加的项目位于索引0,最后添加的位于最后一个索引)。字典不会(或者至少永远不会保证这样做)。Keyed
我正在寻找HashSet设计者的头脑。据我所知,我的问题同时适用于Java和C#HashSet,这让我认为这一定有一些充分的理由,尽管我自己也想不出来。我在HashSet中插入了一个item,为什么不通过枚举就无法检索到那个item,几乎不是一个高效的操作?特别是因为HashSet是以一种支持高效检索的方式显式构建的。让Remove(x)和Contains(x)返回被删除或包含的实际项目通常对我很有用。这不一定是我传递给Remove(x)或Contains(x)函数的项目。当然,我想我可以通过HashMap实现相同的效果,但是当完全可以使用集合来实现这一点时,为什么还要浪费所有的空间和
我正在寻找HashSet设计者的头脑。据我所知,我的问题同时适用于Java和C#HashSet,这让我认为这一定有一些充分的理由,尽管我自己也想不出来。我在HashSet中插入了一个item,为什么不通过枚举就无法检索到那个item,几乎不是一个高效的操作?特别是因为HashSet是以一种支持高效检索的方式显式构建的。让Remove(x)和Contains(x)返回被删除或包含的实际项目通常对我很有用。这不一定是我传递给Remove(x)或Contains(x)函数的项目。当然,我想我可以通过HashMap实现相同的效果,但是当完全可以使用集合来实现这一点时,为什么还要浪费所有的空间和