Es scheint jedoch, dass ich eine anonyme Methode ohne Parameter (delegate {}) ohne Compilerfehler zurückgeben kann.
Hier ist ein Minimalbeispiel:
Code: Select all
using System;
public class Program
{
public static Action GetEmptyAction()
{
// Why is this line valid?
// 'delegate {}' has no parameters, but Action expects one.
return delegate { };
}
}
Welche Regel oder Funktion der C#-Sprache ermöglicht die Zuweisung einer Methode mit weniger Parametern (in diesem Fall Null) zu einem Delegate-Typ, der mehr Parameter erwartet?
Ich habe den dafür verwendeten Lambda-Ausdruck _ => {} gesehen, der deutlicher macht, dass der Parameter ignoriert wird. Funktioniert die Delegat-{}-Syntax nach dem gleichen Prinzip der Delegatenkompatibilität?
Mobile version