You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#的Dictionary<string, HashSet<string>>中用StringComparer.Ordinal保证HashSet值唯一?

解决方案

要让字典中每个HashSet<string>使用StringComparer.Ordinal保证元素唯一性,核心是在创建HashSet<string>实例时显式传入该比较器——因为HashSet的比较逻辑在初始化时确定,无法后续修改。

1. 初始化字典时直接创建带指定比较器的HashSet

var dict = new Dictionary<string, HashSet<string>>()
{
    { "firstKey", new HashSet<string>(StringComparer.Ordinal) },
    { "secondKey", new HashSet<string>(StringComparer.Ordinal) }
};

2. 后续向字典中添加新的HashSet

动态添加键值对时,确保新创建的HashSet传入比较器:

// 直接添加键值对
dict.Add("newKey", new HashSet<string>(StringComparer.Ordinal));

// 先实例化HashSet再添加
var newHashSet = new HashSet<string>(StringComparer.Ordinal);
newHashSet.Add("value1");
newHashSet.Add("VALUE1"); // 因使用Ordinal,"value1"和"VALUE1"会被视为不同元素
dict.Add("anotherKey", newHashSet);

说明

StringComparer.Ordinal基于字符的Unicode码点做严格比较,不依赖系统文化设置,能精准保证字符串唯一性(区分大小写、区分不同语言的相似字符)。如果需要忽略大小写的序数比较,可改用StringComparer.OrdinalIgnoreCase。

内容的提问来源于stack exchange,提问作者Sharif Mamun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 00:55:33