c# - 在 C# 中执行查找表的最有效方法是什么

标签 c# performance lookup-tables

在C#中做查找表最有效的方法是什么

我有一个查询表。有点像

0 "Thing 1"
1 "Thing 2"
2 "Reserved"
3 "Reserved"
4 "Reserved"
5 "Not a Thing"

因此,如果有人想要“Thing 1”或“Thing 2”,他们会传入 0 或 1。但他们也可能会传入其他内容。 我有 256 个这样的东西,可能还有 200 个是预留的。

那么最有效的设置是什么?

  • 获取所有值的字符串数组或字典变量。然后取整数并返回那个地方的值。

此解决方案的一个问题是所有“保留”值。我不想创建那些多余的“保留”值。或者我可以对所有“保留”的不同位置有一个 if 语句,但它们现在可能只是 2-3,可能是 2-3、40-55 和字节中的所有不同位置。这个 if 语句会很快变得不守规矩

  • 我考虑的另一个选择是 switch 语句。我将拥有所有 50 个已知值,并且会失败并默认为保留值。

我想知道这是否比创建字符串数组或字典并返回适当的值要多得多。

  • 还有别的吗?有没有其他方法可以考虑?

最佳答案

"Retrieving a value by using its key is very fast, close to O(1), because the Dictionary(TKey, TValue) class is implemented as a hash table."

var things = new Dictionary<int, string>();
things[0]="Thing 1";
things[1]="Thing 2";
things[4711]="Carmen Sandiego";

关于c# - 在 C# 中执行查找表的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1855839/

相关文章:

c# - C#中如何使用SqlDataAdapter更新多行

c# - 找不到 ReportingService2010

c# asp.net jQuery AJAX 从 MySQL 获取数据

c# - 旋转 slider WPF

java - 在基于 3d 网格的环境中对电线进行编程的最有效方法是什么?

r - dplyr 查找表/模式匹配

python - Python 中的小表?

算法优化 : Logarithm by calculation or lookup table

php - microtime() 和浮点运算

javascript - 清除 JavaScript 中的事件处理程序有多重要?