KeyValuePair的不区分大小写的键比较

coc*_*lla 2 c#

编辑:文化这些内部操作表明不变文化 OrdinalIgnoreCase是最合适的.

KeyValuePair是密封的.如果我有var a = KeyValuePair<string,int>("foo",1)并且var b = KeyValuePair<string,int>("FOO",2)我比较a.Key == b.Key我会得到假.

我想成真.首先,我将KeyValuePairs包装在一个自定义类中:

public class MyKeyValuePair
{
    private KeyValuePair<string, int> myKeyValuePair;
    public SyncItem(string Key, int Value)
    {
        myKeyValuePair = new KeyValuePair<string, int>(Key, Value);
    }

    public string Key { get { return myKeyValuePair.Key; } }
    public int Value { get { return myKeyValuePair.Value; } }           
}
Run Code Online (Sandbox Code Playgroud)

我的第一个想法是我可以.ToLower()在Key上添加构造函数.

有没有更好的方法呢?有正确的方法吗?我应该考虑哪些因素?

Hab*_*bib 5

您可以使用String.Equals Method(String,StringComparison)而不是==运算符,而不是将其转换为小写.(因为你的密钥是字符串类型)

a.Key.Equals(b.Key, StringComparison.CurrentCultureIgnoreCase)
Run Code Online (Sandbox Code Playgroud)

  • 另请参阅[土耳其语问题以及您应该关注的原因](http://haacked.com/archive/2012/07/05/turkish-i-problem-and-why-you-should-care.aspx).为什么一个人不应该转换成相同的情况. (2认同)