Unterschied zwischen verschiedenen Arten der Instantiierung eines Delegaten (FuncT, T)?

8

1 :

%Vor%

2 :

%Vor%

3 :

%Vor%

Was ist der Unterschied zwischen ihnen?

    
nawfal 23.02.2013, 15:07
quelle

2 Antworten

7

Sie sind alle gleich. Die ersten beiden sind Beispiele für anonyme Methoden . Die letzte ist ein Beispiel für einen Lambda-Ausdruck . Anonyme Methoden und Lambda-Ausdrücke werden zusammen als anonyme Funktionen bezeichnet.

Anonyme Methoden wurden in C # 2 eingeführt; Lambda-Ausdrücke wurden in C # 3 eingeführt und meist anonyme Methoden ersetzt. Beachten Sie, dass Lambda-Ausdrücke auch in Ausdrucksbäume konvertiert werden können, die darstellen der Code als Daten und nicht als IL, sowie Delegierten.

Beachten Sie, dass Func<TResult> , Func<T, TResult> usw. nur Beispiele für Delegattypen sind. Sie können anonyme Funktionen in einen beliebigen kompatiblen Delegattyp konvertieren. Zum Beispiel:

%Vor%     
Jon Skeet 23.02.2013, 15:10
quelle
8

Sie sind alle gleich - nur syntaktischer Zucker , der sich zu dem gleichen zusammensetzt.

Das ist - mit Type Inference und anderen Compiler Goodies ist 3 nur ein sehr kurzer Weg um 1 zu sagen.

    
Oded 23.02.2013 15:09
quelle