SortedList类是根据键对(键,值)对进行排序的集合。可以通过键和索引(从零开始的索引)访问这些对。它位于System.Collections命名空间下。 SortedList.Add(Object,Object)方法用于将具有指定键和值的元素添加到SortedList对象。
SortedList的属性:
- 内部SortedList对象维护两个数组。第一个数组用于存储列表的元素,即键,第二个数组用于存储关联的值。
- 键不能为null,但值可以为null。
- 由于SortedList使用了排序,因此与Hashtable相比,它要慢一些。
- 可以通过重新分配来动态增加SortedList的容量。
- SortedList中的键不能重复,但值可以重复。
- 可以使用IComparer根据键对SortedList进行排序(升序或降序)。
句法:
public virtual void Add (object key, object value);
参数:
key: It is the key of the element which is to be added.
value: It is the value of the element which is to be added. The value can be null.
例外情况:
- ArgumentNullException:如果键为null。
- ArgumentException:如果具有指定键的元素已经存在于SortedList对象中,或者已将SortedList设置为使用IComparable接口,并且该键未实现IComparable接口。
- NotSupportedException:如果SortedList为只读或具有固定大小。
- OutOfMemoryException:如果系统中没有足够的可用内存将对添加到SortedList。
- InvalidOperationException:如果比较器引发异常。
下面的程序说明了上面讨论的方法的使用:
范例1:
// C# program to illustrate how to add key/value
// pair in SortedList
using System;
using System.Collections;
class Geeks {
// Main Method
public static void Main(String[] args)
{
// Creating a sorted list of key/value pairs
SortedList fslist = new SortedList();
// Adding pairs to fslist
fslist.Add("Maths ", 98);
fslist.Add("English ", 99);
fslist.Add("Physics ", 97);
fslist.Add("Chemistry", 96);
fslist.Add("CSE ", 100);
// Displays the marks in different
// subjects sorted according to keys
// i.e subjects
// Here Count property is used to count
// the total number of pairs in SortedList
for (int i = 0; i < fslist.Count; i++) {
Console.WriteLine("{0}:\t{1}", fslist.GetKey(i),
fslist.GetByIndex(i));
}
}
}
输出:
Chemistry: 96
CSE : 100
English : 99
Maths : 98
Physics : 97
范例2:
// C# program to illustrate how to add
// key/value pair in SortedList
using System;
using System.Collections;
class Geeks {
// Main Method
public static void Main(String[] args)
{
// Creating a sorted list of key/value pairs
SortedList fslist = new SortedList();
// Adding pairs to fslist
fslist.Add("Maths ", 98);
fslist.Add("English ", 99);
fslist.Add("Physics ", 97);
fslist.Add("Chemistry", 96);
// this will give error as we are
// adding duplicate key i.e Chemistry
fslist.Add("Chemistry", 100);
}
}
错误:
Unhandled Exception:
System.ArgumentException: Item has already been added. Key in dictionary: ‘Chemistry’ Key being added: ‘Chemistry’
at System.Collections.SortedList.Add (System.Object key, System.Object value) in :0
at Geeks.Main (System.String[] args) in :0
参考:
- https://docs.microsoft.com/zh-cn/dotnet/api/system.collections.sortedlist.add?view=netframework-4.7.2