您当前的位置: 首页 > 

寒冰屋

暂无认证

  • 0浏览

    0关注

    2286博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

在C#中将集合用作键

寒冰屋 发布时间:2020-02-26 14:38:41 ,浏览量:0

目录

介绍

使用这个混乱

使用集合作为键可以使复杂的功能构造更轻松地用C#表示。这段代码提供了两个类,可以对集合进行有序或无序的相等比较,以便它们可用作字典和集合中的键。

• 下载Comparers-master.zip-10.5 KB

介绍

有时,当用C#表达复杂的算法时,您可能发现自己需要根据一组项目而不是单个项目来查找某些信息。Stock.NET提供了一些通过LINQ进行此操作的功能,但它并不是通用的,例如Dictionary 可以使用它。

这个小库旨在提供两种比较方式,以使这些类型的操作变得容易。

使用这个混乱

注意事项

键不应该是可变的,但是由于集合的工作方式,这些键在不应该是可变的时是可变的。不要修改用作键的集合!它将导致您讨厌的错误。

该库公开了两个类,OrderedCollectionEqualityComparer和UnorderedCollectionEqualityComparer,分别提供有序和无序比较。他们致力于实现IList、ICollection或ISet的任何工作。无序比较可能会很昂贵,但是为您的集合使用HashSet可以加快一些速度。您可以使用这些类来提供Dictionary和HashSet来比较集合而不是单个项。演示代码指示如何使用它们:

// create a new hashset that uses ordered collection comparisons
var set = new HashSet(OrderedCollectionEqualityComparer.Default);
// add a collection:
set.Add(new int[] { 1, 2, 3, 4, 5 });

// true:
Console.WriteLine("Ordered cmp - contains 1-5: " + set.Contains(new int[] { 1, 2, 3, 4, 5 }));
// false:
Console.WriteLine("Ordered cmp contains 5-1: " + set.Contains(new int[] { 5, 4, 3, 2, 1 }));

// create a new hashset that uses unordered collection comparisons
set = new HashSet(UnorderedCollectionEqualityComparer.Default);
set.Add(new int[] { 1, 2, 3, 4, 5 });

// true:
Console.WriteLine("Unordered cmp - contains 1-5: " + set.Contains(new int[] { 1, 2, 3, 4, 5 }));
// true:
Console.WriteLine("Unordered cmp contains 5-1: " + set.Contains(new int[] { 5, 4, 3, 2, 1 }));

 

关注
打赏
1665926880
查看更多评论
立即登录/注册

微信扫码登录

0.0576s