EqualityComparer的用法
List<T>中方法Distinct<T>用于返回List队列中的非重复元素,使代码既简化又优雅,这个方法其中一个重载用到IEqualityComparer,下面是它的用法示例:
先定义一个对比准则
然后构建一个List对象
List<RectangleF> rects = new List<RectangleF>();
rects.Add(new RectangleF(..............));往其中添加重复的元素
rects.Add(new RectangleF(..............));
rects.Add(new RectangleF(..............));
rects.Add(new RectangleF(..............));
IEnumerable<RectangleF> rr = rects.Distinct<RectangleF>(new equalcompare());
List利用上而定义的对比准则来对比其中的元素,返回非重复元素
先定义一个对比准则
1
private class equalcompare:EqualityComparer<RectangleF>
2
{
3
public override bool Equals(RectangleF x, RectangleF y)
4
{
5
return x.Left == y.Left && x.Right == y.Right && x.Top == y.Top && x.Bottom == y.Bottom;
6
7
}
8
public override int GetHashCode(RectangleF obj)
9
{
10
return obj.GetHashCode();
11
}
12
}
List会用这个定义的对比准则来比较其内的每个元素
private class equalcompare:EqualityComparer<RectangleF>2
{3
public override bool Equals(RectangleF x, RectangleF y)4
{5
return x.Left == y.Left && x.Right == y.Right && x.Top == y.Top && x.Bottom == y.Bottom;6
7
}8
public override int GetHashCode(RectangleF obj)9
{10
return obj.GetHashCode();11
}12
}然后构建一个List对象
List<RectangleF> rects = new List<RectangleF>();
rects.Add(new RectangleF(..............));往其中添加重复的元素
rects.Add(new RectangleF(..............));
rects.Add(new RectangleF(..............));
rects.Add(new RectangleF(..............));
IEnumerable<RectangleF> rr = rects.Distinct<RectangleF>(new equalcompare());
List利用上而定义的对比准则来对比其中的元素,返回非重复元素

浙公网安备 33010602011771号