2using System.Collections.Generic;
11 internal class LexicographicListComparer<T> : LexicographicListComparer<T, IComparer<T>>
36 internal class LexicographicListComparer<T, TComparer> : LexicographicListComparer<T, IComparer<T>, IReadOnlyList<T>>
63 where TComparer : IComparer<T>
64 where TList : IReadOnlyList<T>
67 readonly TComparer _comparer;
79 public override int Compare(TList? x, TList? y)
81 if (x ==
null && y is
null)
90 int c = x.Count.CompareTo(y.Count);
94 var length = Math.Min(x.Count, y.Count);
95 for (
int i = 0; i < length; i++)
97 c = _comparer.Compare(x[i], y[i]);
Implements an IComparer<T> which lexicographically compares a two lists.
override int Compare(TList? x, TList? y)
LexicographicListComparer(IComparer< T > comparer)
Initializes a new instance.
LexicographicListComparer(TComparer comparer)
Initializes a new instance.
static new readonly LexicographicListComparer< T > Default
Returns a default LexicographicListComparer<T> instance.