添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
刀枪不入的小蝌蚪  ·  演出、讲座·  1 年前    · 
刀枪不入的甘蔗  ·  【保时捷Cayenne ...·  1 年前    · 
1290183444  ·  琵琶梦2022雅宝姐 - 抖音·  1 年前    · 
C# 有序列表

C# 有序列表

如果需要基于键对所需集合排序,就可以使用 SortedList<TKey,TValue>类。这个类按照键给元素排序。这个集合中的值和键都可以使用任意类型。

下面的例子创建了一个有序列表,其中键和值都是 string 类型。默认的构造函数创建了一个空列表,再用 Add()方法添加两本书。使用重载的构造函数,可以定义列表的容量,传递实现了 IComparer<TKey>接口的对象,该接口用于给列表中的元素排序。

Add()方法的第一个参数是键(书名),第二个参数是值(ISBN号)。除了使用 Add()方法之外,还可以使用索引器将元素添加到列表中。索引器需要把键作为索引参数。如果键已存在,Add()方法就抛出一个 ArgumentException 类型的异常。如果索引器使用相同的键,就用新值替代旧值。

varbooks=newSortedlist<string,string>();books.Add("ProfessionalWPFProgramming","978-0-470-04180-2");books.Add("ProfessionalASP.NETMVC5","978-1-118-79475-3");books["BeginningC# 6Programming"] = "978-1-119-09668-9";books["ProfessionalC#6and.NETCore1.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-3ProfessionalC#6and.NETCore1.0, 978-1-119-09660-3ProfessionalWPFProgramming,978-0-470-04180-2

也可以使用 Values 和 Keys 属性访问值和键。因为 Values 属性返回 IList<TValue>,Keys 属性返回 IList<TKey>,所以可以通过 foreach 语句使用这些属性:

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

如果尝试使用索引器访问一个元素,但所传递的键不存在,就会抛出一个KeyNotFoundException 类型的异常。为了避免这个异常,可以使用 ContainsKey()方法,如果所传递的键存在于集合中,这个方法就返回 true,也可以调用 TryGetValue()方法,如果指定键对应的值不存在,该方法就会尝试获得指定键的值,而不会抛出异常。


stringtitle="ProfessionalC# 8";if (!books.TryGetValue(title, out string isbn)){ Console.WriteLine($"{title} not found");}





往期推荐



  • C# 迭代器

  • C# 执行 SQL 语句

  • C# 连接数据库

  • C# 接口的实现与继承

  • C# 泛型的使用


Love life,love yourself

关注小编不迷路呦~

发布于 2022-01-15 15:05