MSDNから
SequenceEqual(IEnumerable, IEnumerable) メソッドは、2 つのソース シーケンスを並行して列挙し、TSource の既定の等値比較子 Default を使用して、対応する要素を比較します。デフォルトの等値比較子である Default は、IEqualityComparer ジェネリック インターフェイスを実装する型の値を比較するために使用されます。
a) 上記の引用を理解しているように、が EqualityComparer<T>.Default
を実装する型の要素を比較するために使用されることを暗示しています。IEqualityComparer<T>
Default
IEqualityComparer<T>
IEquatable<T>.Equals
T
IEquatable<T>
Object.Equals
TSource
b)引用は、実装する必要があることも示唆して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 { }
それで、引用が伝えようとしていることを誤解したのでしょうか、それとも引用が間違っているのでしょうか?
ありがとうございました