С MSDN
Метод SequenceEqual (IEnumerable, IEnumerable) перечисляет две исходные последовательности параллельно и сравнивает соответствующие элементы с помощью средства сравнения по умолчанию для TSource, Default.Средство сравнения равенства по умолчанию, Default, используется для сравнения значений типов, которые реализуют универсальный интерфейс 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 { }
Поэтому я неправильно истолковал то, что цитата пытается передать или являетсяцитата просто неверна?
спасибо