2008-10-07 8 views
6

Antworten auf einen letzten Beitrag (Jede Chance, mal() Ruby-Methode in C# zu imitieren?) Verwenden Sie den =>-Operator in den Anwendungsbeispielen. Was macht dieser Operator? Ich kann es nicht in meinem C# -Buch finden und es ist schwierig online nach solchen Symbolen zu suchen. (Ich konnte es nicht finden.)Was bedeutet der C# -Operator =>?

Antwort

15

Es ist nicht wirklich ein Operator als solcher, es ist Teil der Syntax für Lambda-Ausdrücke. Insbesondere => ist das Bit, das die Parameter vom Körper des Lambda-Ausdrucks trennt.

Deckt Ihr Buch C# 3.0? Wenn nicht, enthält es keine Lambda-Ausdrücke. Wenn es so ist, sollte es sie wirklich decken! Hoffentlich mit der richtigen Terminologie, können Sie es im Inhaltsverzeichnis oder Index finden.

EDIT: ein bisschen mehr Informationen: Ein Lambda-Ausdruck ist ein Stück syntaktischen Zuckers entweder eine Instanz eines Delegaten oder ein Ausdrucksbaums (wobei letztere neu zu .NET 3.5). Lambda-Ausdrücke ersetzen fast vollständig anonyme Methoden (ab C# 2.0), obwohl sie den Begriff "Ich interessiere mich nicht für die Parameter" nicht so unterstützen wie anonyme Methoden.

+0

Ah, mein Buch deckt nicht C# 3.0, also kein Wunder, dass ich es nicht finden konnte! –

+0

Kann ich Sie fragen, was Sie mit '" Ich interessiere mich nicht für die Parameter "in der Art, dass anonyme Methoden tun. Vielen Dank! – xanatos

+1

@xanatos: Um beispielsweise einen 'EventHandler' zu erstellen, der den Absender oder die Argumente nicht verwendet, können Sie' delegate {Console.WriteLine ("Called"); } 'ohne Angabe einer Parameterliste. Das ist konvertierbar zu * jedem * Delegattyp mit einem Rückgabetyp von void und allen "in" -Parametern. –

1

, die für einen Lambda-Ausdruck sein wird:

http://msdn.microsoft.com/en-us/library/bb397687.aspx

Ein Beispiel ist hier:

MyControl.OnMouseDown += (sender, e) => 
{ 
    // Do something in the mouse down event 
}; 

Hier habe ich einen Lambda-Ausdruck Ereignisdelegaten geschaffen haben. Es erspart mir grundlegend, dass ich dafür in der Klasse eine separate Funktion erstellen muss.

1

Ein Lambda-Ausdruck ist eine anonyme Funktion, die Ausdrücke und Anweisungen enthalten kann und zum Erstellen von Stellvertretern oder Ausdrucksbaumtypen verwendet werden kann.

Alle Lambda-Ausdrücke verwenden den Lambda-Operator =>, der als "goes to" gelesen wird. Die linke Seite des Lambda-Operators gibt die Eingangsparameter (falls vorhanden) und die rechte Seite hält den Ausdruck oder den Anweisungsblock

http://msdn.microsoft.com/en-us/library/bb397687.aspx

1

Der => Token den lambda Operator genannt wird.

Es wird in Lambda-Ausdrücken verwendet, um die Eingangsvariablen auf der linken Seite vom Lambda-Körper auf der rechten Seite zu trennen.

MSDN