Come mai le funzioni anonime funzionano come argomenti sui metodi, ma non negli argomenti del costruttore?SortedSet <T> e anonymous IComparer <T> nel costruttore non funziona
Se creo un List<string>
, è un metodo di ordinamento con la seguente firma:
public void Sort(IComparer<T> comparer)
dove le seguenti opere:
List<string> list = new List<string>();
list.Sort((a,b) => a.CompareTo(b));
SortedSet ha un costruttore con una firma simile :
public SortedSet(IComparer<T> comparer)
ma questo non riesce quando si utilizza una funzione anonima nel costruttore. Quanto segue non è valido:
SortedSet<string> set = new SortedSet<string>((a, b) => a.CompareTo(b));
Creazione di una classe di ordinamento funziona bene come previsto:
public class MyComparer : IComparer<string>
{
public int Compare(string a, string b)
{ return a.CompareTo(b); }
}
SortedSet<string> set = new SortedSet<string>(new MyComparer());
Grazie per la spiegazione e il codice wrapper. Ora vedo che stavo usando il Confronto e non IComparere in ordine. –