Ich sah here, dass Func<(Of <(T1, T2, T3, T4, TResult>)>) Delegate
der letzte Func
im Namespace war. Was machen Sie, wenn Sie mehr als 4 Parameter benötigen?Gibt es Func-Objekte mit mehr als 4 Parametern?
Antwort
Sie könnten Ihre eigenen Func
Delegaten erstellen, oder Sie könnten auf die Ankunft von .NET 4 warten (es enthält integrierte Func
und Action
Delegaten mit bis zu 16 Parametern).
Wie andere bereits erwähnt haben, ist es an der Zeit, über eine Art Refactoring nachzudenken, wenn Sie einen Delegaten finden, der diese vielen Parameter akzeptiert.
public delegate TResult Func<T1, T2, T3, T4, T5, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5);
public delegate TResult Func<T1, T2, T3, T4, T5, T6, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6);
public delegate TResult Func<T1, T2, T3, T4, T5, T6, T7, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7);
public delegate TResult Func<T1, T2, T3, T4, T5, T6, T7, T8, TResult>
(T1 arg1, T2 arg2, T3 arg3, T4 arg4, T5 arg5, T6 arg6, T7 arg7, T8 arg8);
// etc
Erstellen Sie ein Parameterobjekt, vielleicht?
Der refactor Katalog ein good description.
Güte hat,
Dan
Das Muss Buch lesen __CODE complete__ empfiehlt bis zu 7 Parameter. :-) –
Ich denke, Steve McConnell muss einen sehr großen Monitor gehabt haben, um die Methodensignaturen zu lesen;) Einverstanden von ganzem Herzen RE: Muss lesen. –
In .Net 4, gibt es Überlastungen bis 17 (mehr oder weniger) Parameter.
Ich persönlich denke, das ist verrückt. Wenn Sie mehr als 4 Parameter benötigen, ist es an der Zeit, eine neue Klasse mit allen Parametern zu erstellen, die Sie als Eigenschaften benötigen.
Ich finde es etwas lächerlich, dass Sie das für "verrückt" halten. Selbst eine der fundamentalsten Operationen, 'Array.Copy', hat 5 Parameter, ebenso wie' String.Compare' (** 7 ** Parameter) und im Allgemeinen viele Funktionen, die Item/Offset/Count-Eingaben und ähnliches haben. – Mehrdad
- 1. NSIS-Funktion mit mehr als 1 Parametern
- 2. Handhabung von mehr als 7 Parametern
- 3. Each.iterator druckt mehr als es sollte, Ruby on Rails 4
- 4. Gibt es im Android 4.x-Spinner keine Eingabeaufforderung mehr?
- 5. Ajax AutoCompleteExtender mit mehr Parametern
- 6. Gibt es eine Rails 4 Backports-Bibliothek?
- 7. Gibt es jede Änderung von BNF mit Parametern
- 8. Laravel 4 - Umleitung :: Route mit Parametern
- 9. Speicher von Terminen mit mehr-als-4-stellige Jahren
- 10. Konvention zum Tabellennamen mit mehr als einem Wort Laravel 4
- 11. Wählen Sie Zahlen mit mehr als 4 Dezimalstellen
- 12. Gibt es Bootstrap 4 Themen?
- 13. Gibt es mehr zum C# "as" Schlüsselwort als einfaches Casting?
- 14. Gruppe nur wenn es mehr als 2 ähnliche Reihen gibt?
- 15. Gibt es mehr als ein jQuery Autocomplete-Widget?
- 16. htaccess Rewrite URL mit 4 GET Parametern
- 17. können meine Programme auf mehr als 4 GB Speicher zugreifen?
- 18. Rails Active 4: richtige Weg, eine mehr als
- 19. Prometheus TopK gibt mehr Ergebnisse als
- 20. Orbeon Forms Laden dauert mehr als 4 Minuten
- 21. MVC 4 gibt JSON als ActionResult zurück
- 22. Scrapy gibt mehr Ergebnisse als erwartet
- 23. wie kann JVM verwenden mehr als 4 GB Arbeitsspeicher
- 24. Gibt es eine Möglichkeit, mehr Ansicht Motoren mit Express + Node.js
- 25. Subquery gibt mehr als eine Zeile SQL
- 26. Unterabfrage gibt mehr als 1 Zeile zurück?
- 27. Unterabfrage gibt mehr als 1 Zeile zurück
- 28. Gibt es irgendwelche cms für Rails 4?
- 29. R nicht mehr als 4 GB Speicher verwenden
- 30. Warum gibt Emacs (als Daemon) 1 Frame mehr als geöffnet?
. Net 4 erlaubt eine unbegrenzte Anzahl? Übrigens, können Sie ein Beispiel für die 'Func'-Delegierten, von denen Sie sprechen, veröffentlichen? – Geo
Nein, keine unbegrenzte Nummer. Sie können bis zu 16 Parameter haben –
Refactoring? Nein, zu früh. Auch 'String.Compare' nimmt 7 Parameter auf. – Mehrdad