为什么匿名函数可以作为方法参数,但无法在构造函数的参数中使用?
如果我创建一个 `List`,它具有以下签名的 Sort 方法:
如果我创建一个 `List`,它具有以下签名的 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() );