C# 是否有一种既作为列表又作为字典的数据类型?

C# 是否有一种既作为列表又作为字典的数据类型?,c#,C#,通常,当我需要一个整数/字符串列表时,我会创建一个如下列表: var list = new List<string> var list=新列表 然后我创建了一个包含所有字符串的哈希表,我不会插入到列表中,除非它不在哈希表中,也就是说,强制列表中的唯一项 是否有一种数据类型可以满足我的这两个要求 是否有一种数据类型可以满足我的这两个要求 不需要。给定元素的唯一键,哈希表将为您提供对该元素的直接访问,而在列表中,您不需要键,您肯定可以有重复项。确实有。使用: var set=newh

通常,当我需要一个整数/字符串列表时,我会创建一个如下列表:

var list = new List<string>
var list=新列表
然后我创建了一个包含所有字符串的哈希表,我不会插入到列表中,除非它不在哈希表中,也就是说,强制列表中的唯一项

是否有一种数据类型可以满足我的这两个要求

是否有一种数据类型可以满足我的这两个要求

不需要。给定元素的唯一键,哈希表将为您提供对该元素的直接访问,而在列表中,您不需要键,您肯定可以有重复项。

确实有。使用:

var set=newhashset();
增加(4);
集合。添加(4);//集合中已经有这样一个元素,没有添加新元素

但是请记住,它并不能保证元素的顺序。

您是指
哈希集吗


哈希集中的所有元素都是唯一的;
Add()
方法返回一个
bool
,以指示是否实际添加了新项,或者该项是否为不可操作项。

您可以使用
HashSet
数据类型。这将只允许您拥有每个值的一个副本。

如果您只需要一组唯一的值(并且随后不关心排序),那么您应该从技术上看一个。但是,这是一个旧的非更新(非泛型)类,我通常建议避免使用它;-)

表示可由键或索引访问的键/值对的集合

在实践中,我将创建一个最小的包装器类来公开所需的操作。(我可能会使用
HashSet
(用于存在)和
列表
(用于排序),尽管在大多数情况下,仅仅一个
列表
远远不足以满足相对较小的
n
——请记住,Big-O是关于限制的。)

快乐的编码。

HashSet=newhashset();
HashSet<string> set = new HashSet<string>();

bool inserted = set.Add("Item");
bool insertedDuplicate = set.Add("Item");

inserted.Dump("Result1");
insertedDuplicate.Dump("Result2");

//Result
//Result1 = true
//Result2 = false
bool inserted=set.Add(“项目”); bool insertedDuplicate=set.Add(“项目”); 插入。转储(“结果1”); inserteddump.Dump(“Result2”); //结果 //结果1=真 //结果2=假

您可以在LinqPad中运行此功能,查看其功能和工作方式。

。。。我不明白。您想要一组所有内容都必须唯一的键值对,还是一组唯一的值?请您解释一下这两个要求是什么?我今天有点慢。或者可能是一本字典?哈希表中的键已经是唯一的了,因为它们的哈希代码是唯一的吗?@Yam Marcovic:但不是valuesWoops,对我来说有点慢!英雄所见略同。要强调的是,与列表/字典方法相反的哈希集将不允许有序迭代。顺序并不重要,重要的是唯一性。它是否具有内置的迭代方式(与哈希表不同);给定上面的示例:foreach(集合中的var elem){Console.WriteLine(elem);}
HashSet<string> set = new HashSet<string>();

bool inserted = set.Add("Item");
bool insertedDuplicate = set.Add("Item");

inserted.Dump("Result1");
insertedDuplicate.Dump("Result2");

//Result
//Result1 = true
//Result2 = false