EqualityComparer的用法

List<T>中方法Distinct<T>用于返回List队列中的非重复元素,使代码既简化又优雅,这个方法其中一个重载用到IEqualityComparer,下面是它的用法示例:

先定义一个对比准则
 1private 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对象
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利用上而定义的对比准则来对比其中的元素,返回非重复元素
posted on 2008-06-13 15:57  tloner  阅读(920)  评论(1)    收藏  举报