在字典中使用的不区分大小写的字符串

本文关键字:不区 大小写 字符串 字典 | 更新日期: 2023-09-27 18:37:02

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

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();
    }
}

有没有更好的方法可以做到这一点?

谢谢

在字典中使用的不区分大小写的字符串

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

您可以使用StringComparer.OrdinalIgnoreCaseStringComparer.CurrentCultureIgnoreCaseStringComparer.InvariantCultureIgnoreCase具体取决于您的需要。

MSDN 中提供的详细信息

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