如果需要基于鍵對所需集合排序,就可以使用 SortedList<TKey,TValue>類。這個類按照鍵給元素排序。這個集合中的值和鍵都可以使用任意類型。
下面的例子建立了一個有序清單,其中鍵和值都是 string 類型。預設的構造函數建立了一個空清單,再用 Add()方法添加兩本書。使用重載的構造函數,可以定義清單的容量,傳遞實作了 IComparer<TKey>接口的對象,該接口用于給清單中的元素排序。
Add()方法的第一個參數是鍵(書名),第二個參數是值(ISBN号)。除了使用 Add()方法之外,還可以使用索引器将元素添加到清單中。索引器需要把鍵作為索引參數。如果鍵已存在,Add()方法就抛出一個 ArgumentException 類型的異常。如果索引器使用相同的鍵,就用新值替代舊值。
var books = new Sortedlist<string, string>();books.Add("Professional WPF Programming","978-0-470-04180-2");books.Add("Professional ASP.NET MVC 5","978-1-118-79475-3");books["Beginning C# 6 Programming"] = "978-1-119-09668-9";books["Professional C# 6 and .NET Core 1.0"] = "978-1-119-09660-3";
注意
SortedList<TKey, TValue>類隻允許每個鍵有一個對應的值,如果需要每個鍵對應多個值,就可以使用 Lookup<TKey, TElement>類。
可以使用 foreach 語句周遊該清單。枚舉器傳回的元素是 KeyValuePair<TKey, TValue>類型,其中包含了鍵和值。鍵可以用 Key 屬性通路,值可以用 Value 屬性通路。
foreach (KeyValuePair<string, string> book in books){ Console.WriteLine($"(book.Key),(book.Value}");}
疊代語句會按鍵的順序顯示書名和 ISBN 号:
Beginning C# 6 Programming, 978-1-119-09668-9 Professional ASP.NET MVC 5, 978-1-118-79475-3Professional C# 6 and .NET Core 1.0, 978-1-119-09660-3 Professional WPF Programming, 978-0-470-04180-2
foreach (string isbn in books.Values) { Console.WriteLine(isbn);}foreach (string title in books.keys){ Console.WriteLine(title);}
978-1-119-09668-9978-1-118-79475-3978-1-119-09660-3978-0-470-04180-2Beginning C# 6 Programming Professional ASP.NET MVC 5Professional C# 6 and .NET Core 1.0 Professional WPF Programming
string title = "Professional C# 8";if (!books.TryGetValue(title, out string isbn)){ Console.WriteLine($"{title} not found");}