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
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
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Schau mal die Themen 'anonyme Methoden' und 'Lambda Ausdrücke' an
OO gibts seit Platon - hatte der auch C#?