Laden...

Verstehe Delegate mit Lambda Expression (Schreibweise) nicht

Erstellt von mygil vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.560 Views
M
mygil Themenstarter:in
124 Beiträge seit 2009
vor 6 Jahren
Verstehe Delegate mit Lambda Expression (Schreibweise) nicht

Hallo!

Kann mir jemand helfen die folgende Codezeile zu verstehen?


Action<IEnumerable<string>> dispatcher = (messages) => { SendToClient(messages); };

Wie würde beispielsweise eine längere Schreibweise dafür aussehen?

Hier die Klasse wo der Code derzeit eingesetzt wird:


    public class MessageSenderHub : Hub
    {
        // function
        public void SendToClient(IEnumerable<string> messages)
        {
            foreach (string message in messages)
                Clients.All.broadcastMessage(message);
        }

        // ct
        public MessageSenderHub()
        {
            Action<IEnumerable<string>> dispatcher = (messages) => { SendToClient(messages); };

            // We create a singleton instance of PushMessaging
            PushMessaging.GetInstance(dispatcher);
        }       
    }

Danke für eure Hilfe im Voraus.
Lg Gilbert

3.170 Beiträge seit 2006
vor 6 Jahren

Hallo,

schau mal in [Artikel] Delegaten, anonyme Methoden, Lambda-Ausdrücke & Co. , da wird's in einem eigenen Abschnitt erklärt.

Gruß, MarsStein

Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca

771 Beiträge seit 2009
vor 6 Jahren

Das entspricht:


Action<IEnumerable<string>> dispatcher = MyDispatcherMethod;

void MyDispatcherMessage(IEnumerable<string> messages)
{
    return SendToClient(messages);
}

Bei Lamda Expressions braucht man also keine eigene Methode erstellen und die Parameter-Typen sind implizit bekannt. Zusätzlich braucht man in dem Code auch das 'return' nicht explizit hinschreiben.

57 Beiträge seit 2012
vor 6 Jahren

Schau mal die Themen 'anonyme Methoden' und 'Lambda Ausdrücke' an

OO gibts seit Platon - hatte der auch C#?