Mi è capitato di vedere un codice in cui questo tipo ha passato un'espressione lambda a ArrayList.Sort (IComparer qui) o IEnumerable.SequenceEqual (IEnumerable list, IEqualityComparer qui) in cui era previsto un compiler o un complemento IEquality.Passare un'espressione lambda al posto di IComparer o IEqualityComparer o qualsiasi interfaccia a metodo singolo?
Non posso essere sicuro se l'ho visto, o sto solo sognando. E non riesco a trovare un'estensione su nessuna di queste raccolte che accetta un Func <> o un delegato nelle loro firme di metodo.
Esiste un tale metodo di sovraccarico/estensione? Oppure, se no, è possibile andare in giro in questo modo e passare un algoritmo (leggi delegato) dove è prevista un'interfaccia a metodo singolo?
Aggiornamento Grazie a tutti. È quello che pensavo. Devo aver sognato. So come scrivere una conversione. Non ero sicuro di aver visto qualcosa del genere o solo di averlo visto.
Ancora un altro aggiornamento Guarda, qui, ho trovato una tale istanza. Dopo tutto non stavo sognando. Guarda what this guy is doing here. Cosa dà?
E questo è un altro aggiornamento: Ok, ho capito. Il ragazzo sta usando il sovraccarico Comparison<T>
. Bello. Bello, ma totalmente incline a ingannarti. Bello, però. Grazie.
possibile duplicato di [Avvolgere un delegato in un IEqualityComparer] (http://stackoverflow.com/questions/98033/wrap-a-delegate-in-an-iequalitycomparer) – nawfal
@nawfal: Questa è una domanda diversa. Sono in qualche modo imparentati ma ancora diversi. Questa è una domanda molto bella, però. Grazie per la condivisione. L'ho trovato molto interessante. :-) –
Oh sì, ora vedo, ma molto vicino: P Ho ritirato il voto ravvicinato, ma terrò il commento in modo che gli altri visitatori se ne accorgano. Una cosa, accetti gentilmente le risposte. Penso che la risposta votata in alto risponda alla tua domanda. – nawfal