Почему анонимный метод без параметров можно назначить делегату 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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