C# LanguageДелегаты


замечания

Резюме

Тип делегата - это тип, представляющий конкретную подпись метода. Экземпляр этого типа относится к определенному методу с соответствующей сигнатурой. Параметры метода могут иметь типы делегирования, и поэтому этому одному методу передается ссылка на другой метод, который затем может быть вызван

Встроенные типы делегатов: Action<...> , Predicate<T> и Func<...,TResult>

System имена содержат Action<...> , Predicate<T> и Func<...,TResult> делегатов, где "..." составляет от 0 до 16 параметров универсального типа (для 0 параметров, Action являются не- родовое).

Func представляет методы с типом возвращаемого типа TResult , а Action представляет методы без возвращаемого значения (void). В обоих случаях дополнительные параметры типового типа соответствуют параметрам метода.

Predicate представляет метод с булевым типом возврата, T - входной параметр.

Пользовательские типы делегатов

Именованные типы делегатов могут быть объявлены с использованием ключевого слова delegate .

Вызов делегатов

Делегаты могут быть вызваны с использованием того же синтаксиса, что и методы: имя экземпляра делегата, за которым следуют скобки, содержащие любые параметры.

Присвоение делегатам

Делегатам можно назначить следующие способы:

  • Назначение именованного метода
  • Назначение анонимного метода с использованием лямбда
  • Назначение именованного метода с использованием ключевого слова delegate .

Объединение делегатов

Несколько экземпляров делегата могут быть назначены одному экземпляру делегата с помощью оператора + . Оператор - может использоваться для удаления делегата компонента из другого делегата.

Делегаты Связанные примеры