Как анонимные функции работают как аргументы методов, но не в аргументах конструктора?
Если я создаю List<string>
, он имеет метод Sort со следующей подписью:
public void Sort(IComparer<T> comparer)
где выполняется следующее:
List<string> list = new List<string>();
list.Sort( (a,b) => a.CompareTo(b) );
SortedSet имеет конструктор с аналогичной сигнатурой:
public SortedSet(IComparer<T> comparer)
но это не удается при использовании анонимной функции в конструкторе. Недопустимо следующее:
SortedSet<string> set = new SortedSet<string>( (a, b) => a.CompareTo(b) );
Создание класса сортировки работает нормально, как ожидалось:
public class MyComparer : IComparer<string>
{
public int Compare(string a, string b)
{ return a.CompareTo(b); }
}
SortedSet<string> set = new SortedSet<string>( new MyComparer() );