¿Cómo es que las funciones anónimas funcionan como argumentos en los métodos, pero no en los argumentos del constructor?SortedSet <T> y anónimo IComparer <T> en el constructor no funciona
Si creo un List<string>
, que tiene un método de ordenación con la siguiente firma:
public void Sort(IComparer<T> comparer)
en las siguientes obras:
List<string> list = new List<string>();
list.Sort((a,b) => a.CompareTo(b));
SortedSet tiene un constructor con una firma similares :
public SortedSet(IComparer<T> comparer)
pero esto falla al usar una función anónima en el constructor. Lo siguiente no es válido:
SortedSet<string> set = new SortedSet<string>((a, b) => a.CompareTo(b));
Creación de una clase de clasificación funciona bien como se esperaba:
public class MyComparer : IComparer<string>
{
public int Compare(string a, string b)
{ return a.CompareTo(b); }
}
SortedSet<string> set = new SortedSet<string>(new MyComparer());
Gracias por la explicación y el código del envoltorio. Ahora veo que estaba usando la comparación y no IComparere en el ordenamiento. –