用于字典的不区分大小写的字符串?

时间:2013-10-26 17:04:09

标签: c#

我需要一个字典来获得一个字符串但忽略大小写的键。我已经反编译了Dictionary类型,它基本上创建了密钥哈希码的哈希表。我不能将字符串子类化,因为它是一个原始类型,所以我创建了自己的类作为键:

struct StringCaseInsensitiveHash
{
    private readonly string _innerString;
    public StringCaseInsensitiveHash(string str)
    {
        _innerString = str;
    }

    public static implicit operator string(StringCaseInsensitiveHash stringCaseInsensitiveHash)
    {
        return stringCaseInsensitiveHash._innerString;
    }

    public override int GetHashCode()
    {
        return _innerString.ToLower().GetHashCode();
    }
}

有没有更好的方法呢?

谢谢,

1 个答案:

答案 0 :(得分:11)

字典构造函数允许您传递IEqualityComparer,它将用于比较键和散列目的。

您可以根据需要使用StringComparer.OrdinalIgnoreCaseStringComparer.CurrentCultureIgnoreCaseStringComparer.InvariantCultureIgnoreCase

MSDN

中提供了更多信息
var myDictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);