public MergeSort(MergeSortKind kind, IComparer <T> comparer) { m_comparer = comparer ?? throw new ArgumentNullException(nameof(comparer)); switch (kind) { case MergeSortKind.NonRecursive: m_sort = NonRecursive; break; case MergeSortKind.CopyFirstRecursive: m_sort = CopyFirstRecursive; break; case MergeSortKind.Recursive: m_sort = Recursive; break; default: throw new ArgumentOutOfRangeException(nameof(kind)); } }
public MergeSort(MergeSortKind kind) : this(kind, Comparer <T> .Default) { }