Почему анонимный метод без параметров можно назначить делегату Action, который ожидает параметр?C#

Место общения программистов C#
Anonymous
Почему анонимный метод без параметров можно назначить делегату Action, который ожидает параметр?

Сообщение Anonymous »

Я изучаю делегаты в C# и наткнулся на шаблон, который до конца не понимаю. У меня есть универсальный метод, возвращающий Action, который, как я ожидаю, будет методом, принимающим один параметр типа T.
Однако кажется, что я могу вернуть анонимный метод без параметров (делегат {}) без каких-либо ошибок компилятора.
Вот минимальный пример:

Код: Выделить всё

using System;

public class Program
{
public static Action GetEmptyAction()
{
// Why is this line valid?
// 'delegate {}' has no parameters, but Action expects one.
return delegate { };
}
}
Мой вопрос:
Какое правило или функция языка C# позволяет назначать метод с меньшим количеством параметров (в данном случае нулем) типу делегата, который ожидает больше параметров?
Я видел лямбда-выражение _ => {}, используемое для этого, что делает более ясным, что параметр игнорируется. Работает ли синтаксис делегата {} на основе того же принципа совместимости делегатов?

Подробнее здесь: https://stackoverflow.com/questions/798 ... actiont-th

Вернуться в «C#»