StringComparer.OrdinalIgnoreCase
是 .NET 提供的不区分大小写、且按 Unicode 码位排序的字符串比较器,适用于哈希表、字典、集合、排序等需要显式指定比较规则的地方。1. 核心特点
特性 | 说明 |
---|---|
比较规则 | 不区分大小写(A == a) |
排序规则 | 纯 Unicode 码位顺序(文化无关) |
性能 | 比文化敏感比较器(CurrentCultureIgnoreCase )快 |
线程安全 | 单例,可共享 |
2. 常见场景
// 1. 字典忽略大小写
var dict = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
dict["abc"] = 1;
Console.WriteLine(dict["ABC"]); // 输出 1// 2. 集合去重
var hs = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
hs.Add("aaa");
hs.Add("AAA"); // 不会重复插入// 3. 字符串相等判断
bool eq = string.Equals("Foo", "FOO", StringComparison.OrdinalIgnoreCase);
// 等价于
bool eq = StringComparer.OrdinalIgnoreCase.Equals("Foo", "FOO");
3. 与其他比较器对比
比较器 | 大小写 | 文化敏感 | 适用场景 |
---|---|---|---|
Ordinal |
区分 | 否 | 哈希、加密、协议 |
OrdinalIgnoreCase |
不区分 | 否 | 配置键、HTTP 头、缓存键 |
CurrentCulture |
区分 | 是 | 用户界面排序 |
CurrentCultureIgnoreCase |
不区分 | 是 | 用户输入模糊匹配 |
4. 一句话记忆
**“内部标识、配置、缓存”**一律用OrdinalIgnoreCase
——快、准、与文化无关。