Func & lt; T & gt; mit out-Parameter
Kann passieren ich habe eine Methode mit einem out-parameter als eine Func?
public IList<Foo> FindForBar(string bar, out int count) { }
//somewhere else
public IList<T> Find(Func<string, int, List<T>> listFunction) { }
Func braucht einen Typ, so wird nicht kompilieren Sie es, und rufen Sie listFunction erfordert ein int, und wird nicht zulassen, eine in.
Gibt es eine Möglichkeit, dies zu tun?
InformationsquelleAutor der Frage blu | 2009-08-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
ref
undout
sind nicht Teil der Typ-parameter definition, so dass Sie nicht verwenden können die built-inFunc
Delegierten zu übergebenref
undout
Argumente. Natürlich, Sie können erklären, Ihre eigenen Delegierten, wenn Sie wollen:InformationsquelleAutor der Antwort Mehrdad Afshari
Warum nicht eine Klasse zu Kapseln, die Ergebnisse?
InformationsquelleAutor der Antwort ChaosPandion
Den
Func
Familie der Delegierten (oderAction
für diese Angelegenheit) sind nichts anderes als einfache Delegierte deklarierte Typen wieetc. Delegierten als solche haben sich/ref-Parameter, also in deinem Fall ist es nur eine Frage der benutzerdefinierten Implementierung, indem Sie sich wie die anderen Antworten haben darauf hingewiesen. Warum Microsoft nicht pack Standard, denken Sie an die schiere Anzahl von Kombinationen, die Sie benötigen würde.
nur zwei Parameter. Wir haben nicht einmal berührt
ref
. Es wäre in der Tat umständlich und verwirrend für Entwickler.InformationsquelleAutor der Antwort nawfal
Könnten Sie wickeln Sie es in ein lambda/delegieren/Funktion/Methode, die ausgesetzt die richtige Schnittstelle und rief FindForBar, aber ich vermute, dass FindForBar hat, zählen als ein out-parameter als einen Grund, so müssten Sie sicher sein, werfen, dass Informationen, die Entfernung war ok/safe/wünschenswert/hatte die richtigen Ergebnisse (brauchen Sie, um sicher zu sein, auch wenn Sie nur könnten direkt übergeben FindForBar).
InformationsquelleAutor der Antwort Logan Capaldo