Wenn eine anonyme Methode zum Delegieren mithilfe von Klammern zugewiesen wird, tritt ein Compilerfehler auf?

8

Gegeben die folgenden Beispielcodes:

%Vor%

Was ist der Unterschied zwischen

? %Vor%

und

%Vor%

?

In diesem Beispiel generiert die zweite Anweisung einen Kompilierungsfehler, während die erste nicht.

    
Setyo N 19.04.2012, 04:13
quelle

1 Antwort

21

Eine anonyme Methode hat die Syntax delegate Parameterliste { Anweisungsliste } . Die Parameterliste ist optional.

Wenn Sie die Parameterliste auslassen, ist die anonyme Methode mit jedem Delegattyp kompatibel, bei dem die Parameter nicht mit "out" oder "ref" gekennzeichnet sind.

Wenn Sie die Parameterliste angeben, muss sie genau mit den Delegattyptypen übereinstimmen.

Im ersten Fall werden Sie es weglassen und im zweiten Fall liefern Sie es, aber nicht mit den Delegat-Parametern. Also delegate {} ist legal und delegate (int i, int j) { } ist legal, aber delegate () {} ist nicht.

In jedem Fall ist es wahrscheinlich besser, einen Lambda-Ausdruck zu verwenden. Es ist die häufigere Syntax im neuen Code: (i, j)=>{ } ;

    
Eric Lippert 19.04.2012, 04:18
quelle

Tags und Links