我需要一个字典来获得一个字符串,但忽略大小写.我已经反编译了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();
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点?
谢谢,
Sri*_*vel 11
字典构造函数允许您传递IEqualityComparer它将用于比较键和散列目的.
您可以使用StringComparer.OrdinalIgnoreCase,StringComparer.CurrentCultureIgnoreCase或StringComparer.InvariantCultureIgnoreCase取决于您的需要.
有关MSDN的更多信息
var myDictionary = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |