Warum kann einem Delegaten Action<T>, der einen Parameter erwartet, eine anonyme Methode ohne Parameter zugewiesen werdeC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Warum kann einem Delegaten Action<T>, der einen Parameter erwartet, eine anonyme Methode ohne Parameter zugewiesen werde

Post by Anonymous »

Ich lerne etwas über Delegaten in C# und bin auf ein Muster gestoßen, das ich nicht ganz verstehe. Ich habe eine generische Methode, die eine Action zurückgibt, von der ich erwarte, dass sie einen Parameter vom Typ T akzeptiert.
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 { };
}
}
Meine Frage lautet:
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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post