【发布时间】:2011-08-08 22:34:50
【问题描述】:
来自MSDN
SequenceEqual(IEnumerable, IEnumerable) 方法 枚举两个源序列 并行并比较对应 使用默认相等的元素 TSource 的比较器,默认值。这 默认相等比较器,默认,是 用于比较类型的值 实施 IEqualityComparer 通用 界面。
a) 据我了解上面的引用,它暗示EqualityComparer<T>.Default 用于比较实现IEqualityComparer<T> 的类型的元素,而实际上Default 用于返回IEqualityComparer<T> 的特定实现要么调用IEquatable<T>.Equals(假设T 可分配给IEquatable<T>),要么调用Object.Equals
b) 引用还表明TSource 必须实现IEqualityComparer<T>,这是不正确的:
static void Main(string[] args)
{
Test test1 = new Test();
Test test2 = new Test();
Test[] list1 = { test1, test2 };
Test[] list2 = { test1, test2 };
bool eq = list1.SequenceEqual(list2); //works
}
public class Test { }
那么我是否误解了这句话试图传达的意思,或者这句话是完全错误的?
谢谢
【问题讨论】:
标签: .net linq msdn enumerable iequalitycomparer