【发布时间】: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<string, decimal>()? -
hmm - 我已经单步执行了代码,我相当确定我没有使用默认构造函数。另一件事是函数的行为会随着区分大小写而发生变化 - 因此,当我将 StringComparer.OrdinalIgnoreCase 添加到构造函数时,它会产生影响。
-
对不起 - 你是对的。我在一些测试代码和真实的东西之间搞混了。下面的答案可以解决问题。
标签: c# dictionary stringcomparer