已排序的列表项

问题描述 投票:0回答:5

是否可以将具有相同值的项目添加到排序列表中,因为当我尝试这样做时,它会显示错误:
“具有相同密钥的条目已存在。”
如果可以的话,怎么样?

c# visual-studio-2010 sortedlist
5个回答
3
投票

不可能*按照其他用户的说明添加重复的密钥。

在 c# 中,您可能可以使用 Lookup 类,它允许使用同一键存储多个值。

请参阅:http://msdn.microsoft.com/en-us/library/bb460184.aspx

* 这是可能的,请参阅评论,但只能通过定义一个永远不会返回相等项的比较器来实现,在我看来,这是一个非常非常糟糕的主意。


1
投票

不,这是不可能的。密钥必须是唯一的。


0
投票

密钥应该是唯一的。在 MSDN 上看到这个

ArgumentException   - An element with the specified key already exists in the SortedList object.

http://msdn.microsoft.com/en-us/library/system.collections.sortedlist.add.aspx


0
投票

定义一个实现

IComparer
的类。当您实例化
SortedList
时,您会传入类的一个实例。查看 Knasterbax 的回答


0
投票

您不能插入多个具有相同名称的键,但可以使用同一对象插入多个值。您不需要使用唯一的对象。

我正在展示一个例子

       SortedList sortedList = new SortedList()
       {
           { "Ind", "India" },
           { "Inda", "India" },
           { "BD", "Bangladesh" },
           { "SA", "South Africa" },
           {"SL", "Sri Lanka" },
           {"UAE", "United of Arab Emirates" },
           {"USA", "United States of America" }
       };

       Console.WriteLine("Sorted List Elements");

       foreach(DictionaryEntry item in sortedList)
       {
           Console.WriteLine($"Key: {item.Key}, Value: {item.Value}");
       }

这里我举了7个例子。前两个最相似,我只是更改了键而不是对象。对象是相同的。 我想你明白我的意思了。

© www.soinside.com 2019 - 2024. All rights reserved.