我需要存储 int
的列表- string
要求保留添加项目的顺序的键值对。一旦初始化,它就不会改变,即没有添加或删除任何内容..
一开始我想到用Dictionary<int,string>
每次我需要访问这些项目时使用
foreach(var entry in dict.OrderBy(e=>e.Key)) { } //as Key is `int`
然而,每次订购似乎都不是最好的选择。
现在我想到了一个 List<Tuple<int, string>>
,尽快List<T>
保证项目的顺序。
那么,还有更好的选择吗?
最佳答案
查看建议的可能性:
-
Dictionary
不保证元素的顺序 -
SortedDictionary
对项目进行排序,但不是您添加它们的顺序(它根据键比较排序), -
OrderedDictionary
保持顺序,但它不是通用的,并且会引入不必要的转换和装箱。
所以我认为你应该使用 List<Tuple<int, string>>
.它保留了顺序并且足以使用 foreach
进行迭代和索引访问。如果事先知道大小,也可以使用数组或只读集合类型,如 Cuong Le suggested in his answer .
关于c# - 我应该使用哪些泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14641417/