Ich habe mit den Aktionsdelegierten in C # zusammengearbeitet, um mehr über sie zu erfahren und zu überlegen, wo sie nützlich sein könnten.
Hat jemand den Aktionsdelegierten benutzt und wenn ja, warum? oder könnten Sie einige Beispiele nennen, wo es nützlich sein könnte?
Hier ist ein kleines Beispiel, das die Nützlichkeit des Aktionsdelegierten zeigt
Beachten Sie, dass die foreach-Methode die Sammlung von Namen iteriert und die
print
Methode für jedes Mitglied der Sammlung ausführt . Dies ist ein Paradigmenwechsel für uns C # -Entwickler, wenn wir uns einem funktionaleren Programmierstil zuwenden. (Weitere Informationen zur dahinter stehenden Informatik finden Sie hier: http://en.wikipedia.org/wiki/Map_(higher-order_function) .Wenn Sie jetzt C # 3 verwenden, können Sie dies mit einem Lambda-Ausdruck wie folgt etwas verbessern:
quelle
Eine Sache, die Sie tun können, ist, wenn Sie einen Schalter haben:
Und mit der Macht der Aktionen können Sie diesen Schalter in ein Wörterbuch verwandeln:
...
Oder Sie könnten weiter gehen:
....
Nur ein paar Beispiele. Die offensichtlichere Verwendung wären natürlich Linq-Erweiterungsmethoden.
quelle
Sie können Aktionen für kurze Ereignishandler verwenden:
quelle
Ich habe den Aktionsdelegierten einmal in einem Projekt verwendet:
Sie speichern lediglich eine Aktion (Methodenaufruf) für einen Steuerelementtyp, damit Sie alle Steuerelemente in einem Formular auf die Standardeinstellungen zurücksetzen können.
quelle
Ein Beispiel für die Verwendung von Aktion <>.
Console.WriteLine hat eine Signatur, die zufriedenstellend ist
Action<string>
.Hoffe das hilft
quelle
Ich benutze es, wenn ich mit illegalen Cross-Thread-Anrufen zu tun habe. Zum Beispiel:
Ich muss Reed Copsey SO Benutzer 65358 für die Lösung gutschreiben. Meine vollständige Frage mit Antworten ist SO Frage 2587930
quelle
Ich habe es als Rückruf in einem Event-Handler verwendet. Wenn ich das Ereignis auslöse, übergebe ich eine Methode, die einen String als Parameter verwendet. So sieht die Auslösung der Veranstaltung aus:
Die Methode:
Das ist die Klassendeklaration des Ereignisses Args:
Auf diese Weise kann ich die vom Ereignishandler übergebene Methode mit einem Parameter aufrufen, um die Daten zu aktualisieren. Ich benutze dies, um einige Informationen vom Benutzer anzufordern.
quelle
In Tests verwenden wir viele Funktionen für Aktionsdelegierte. Wenn wir ein Standardobjekt erstellen und später ändern müssen. Ich habe ein kleines Beispiel gemacht. Um ein Standardobjekt für eine Person (John Doe) zu erstellen, verwenden wir die
BuildPerson()
Funktion. Später fügen wir auch Jane Doe hinzu, aber wir ändern ihr Geburtsdatum sowie ihren Namen und ihre Größe.quelle