【问题标题】:How do I determine type of Dictionary comparer in C#?如何在 C# 中确定字典比较器的类型?
【发布时间】:2012-09-17 17:20:42
【问题描述】:

我需要确定我在函数中收到的字典是否具有不区分大小写的比较器。

即。不区分大小写的字典声明如下:

var myDict = new Dictionary<string, decimal>(StringComparer.OrdinalIgnoreCase);

当我将字典接收到我的函数中时,我可以访问 .Comparer 属性并检查其类型 - 但我似乎得到的只是 -

System.Collections.Generic.EqualityComparer<string> 

如何确定所使用的 Comparer 是否为 StringComparer.OrdinalIgnoreCase?

【问题讨论】:

  • 我无法重现您的场景;将该比较器传入并检查.Comparer 得到System.OrdinalComparer。你确定你没有使用默认构造函数,即new Dictionary&lt;string, decimal&gt;()
  • hmm - 我已经单步执行了代码,我相当确定我没有使用默认构造函数。另一件事是函数的行为会随着区分大小写而发生变化 - 因此,当我将 StringComparer.OrdinalIgnoreCase 添加到构造函数时,它会产生影响。
  • 对不起 - 你是对的。我在一些测试代码和真实的东西之间搞混了。下面的答案可以解决问题。

标签: c# dictionary stringcomparer


【解决方案1】:

您应该检查值,而不是 StringComparer.OrdinalIgnoreCase 的类型。

myDict.Comparer == StringComparer.OrdinalIgnoreCase

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 2021-12-22
    • 2023-03-26
    • 2011-10-08
    • 2012-04-07
    相关资源
    最近更新 更多