How come anonymous functions works as arguments on methods, but not in constructor arguments?
If I create a List<string>
, it has a Sort method with the following signature:
public void Sort(IComparer<T> comparer)
where the following works:
List<string> list = new List<string>();
list.Sort( (a,b) => a.CompareTo(b) );
SortedSet has a constructor with a similar signature:
public SortedSet(IComparer<T> comparer)
but this fails when using an anonymous function in the constructor. The following is not valid:
SortedSet<string> set = new SortedSet<string>( (a, b) => a.CompareTo(b) );
Creating a sorting class works fine as expected:
public class MyComparer : IComparer<string>
{
public int Compare(string a, string b)
{ return a.CompareTo(b); }
}
SortedSet<string> set = new SortedSet<string>( new MyComparer() );