"Dictionary(StringComparer)"和"Dictionary"以及存储key.ToUpper:你应该选择哪一个?"

33 浏览
0 Comments

"Dictionary(StringComparer)"和"Dictionary"以及存储key.ToUpper:你应该选择哪一个?"

免责声明:可能会出于微观 YAGNI 优化目的,但听我说完...

问题是要实现一个不区分大小写的查找表。

我旧式的方法:在填充字典时,在插入键之前将键转换为大写。当有人给你一个要查找的键时,将键转换为大写。

新方式(我今天了解到):字典使用 IComparer 实现,因此我可以传递 StringComparer.InvariantCultureIgnoreCase。我认为它会委托 String.Compare(x,y,SomeIgnoreCaseEnum)

新方法的优势在于我不需要确保在针对字典进行每个查找的 n 个位置上都执行 .ToUpper()。

我的问题是哪一个更有效率? 我想只是好奇...

更新:请注意,我不需要知道插入的原始键。使用的键与文化无关。

admin 更改状态以发布 2023年5月21日
0
0 Comments

查看这个条目。它今天仍然是有效的。

摘自MSDN的“Microsoft .NET 2.0中使用字符串的新建议

0
0 Comments

大写可能更有效率,因为可以进行基数比较... 但我非常怀疑这对你来说是一个性能瓶颈。无论何时,在执行代码更改之前,一定要进行性能测试。

最终,指定字符串比较:

  • 意味着您不需要过于关注如何使用字典
  • 意味着原始大小写在键中保持不变,在某些情况下可以帮助诊断
  • 清楚地指出了您想如何处理键。您最终声明它仅仅一次,在创建点 - 这会使代码更清晰,我认为。
0