1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Anonyme Delegate mit optionalen Paramateer

Dieses Thema im Forum ".NET" wurde erstellt von Halfbax, 21. April 2017 um 01:50 Uhr.

  1. Halfbax

    Halfbax Erfahrenes Mitglied

    Hallo,

    ich meld mich mal wieder mit einem Problem zurück. Ich habe ein Delegate und möchte dessen Parameter optional mache, aber wenn ich es dann gleich null im Parameter deklariere, funktioniert der Delegat ohne Parameter trotzdem nicht.


    Code (C#):
    1. public void AddButton(string text, Action<Dictionary<string, string>> callback = null, string icon = "fa-mouse-pointer", string color = "#2980b9")
    Funktioniert
    Code (C#):
    1. test.AddButton("Anmelden", (Dictionary<string, string> inputValues) =>
    2.                 {}, "fa-sign-in");
    Funktioniert nicht
    Code (C#):
    1. test.AddButton("Test", () =>
    2.                 {}, "fa-sign-in");
     
  2. Spyke

    Spyke Capoeirista Premium-User

    delegates sind ja nixs anderes als die kopfbeschreibungen einer methode.
    Eine art datentyp beschreibung für methoden um deren Speicheradressen weiterzugeben und an anderen stellen die entsprechende Methode auszuführen.
    Sprich ein zeiger für ein Methodenaufruf.

    Wenn du dir kompilierten Code im Reflector ILSpy oder so anschaust, siehst du auch das bei optionalen parametern der Wert beim Aufruf mit reincompiliert wird.
    Das allein ist eigentlich schon mit ein hauptgrund warum ich optionale parameter nicht verwende, wird der optionale Wert geändert müssten dennoch alle dlls neu compiliert werden die diese methode aufrufen.
     
  3. Halfbax

    Halfbax Erfahrenes Mitglied

    Ja, gut. Ich werde dennoch den Fall haben, dass ich Buttons erstellen muss, die keine inputValues ala Dictionary benötigen. Und für diesen Fall möchte ich diese Button-Funktion so umändern, dass das Dictionary optional ist.
     
  4. Halfbax

    Halfbax Erfahrenes Mitglied

    Ich habe gerade echt keinen Plan, wie ich das Ganze aufbauen soll. Würdet Ihr mir vielleicht eine Lösung basteln? Dann hätte ich eine Musterlösung für die Zukunft. Das wäre echt hilfreich :)
     
  5. Spyke

    Spyke Capoeirista Premium-User

    warum nicht einfach null beim aufruf übergeben?

    ansonsten 2tes delegate ohne dictionary parameter.
    (Muss natürlich dann auch entsprechend eine aufrufbare Methode ohne diesen Parametern existieren)