c# - 我应该使用哪些泛型

标签 c# generics

我需要存储 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/

相关文章:

c# - 继承/泛型基础知识。如何实现 DRY 的代码结构

c# - $.find 控件的 id 未定义

c# - Request.Url.Port 给出了错误的端口

c# - 试图理解 C# 中的多线程

reactjs - useReducer 中返回参数的通用类型

Java 泛型 - 类型不重要

generics - 针对F <out X>的特定情况F <Nothing>缺少HKT的解决方法

generics - Kotlin 编译器混合具体化类型参数

c# - PluralizationServices 将 Status 更改为 Statu

c# - 无法将 "default"放入开关 block