Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
1121 of 1492 menu
◀ ▶

Ключевое слово delegate

Ключевое слово delegate задаёт именованный тип функции: список параметров и тип возвращаемого значения (или void). Переменная этого типа хранит ссылку на метод; вызов идёт как у функции через имя переменной. Так описывают колбэки до использования готовых Action и Func.

Синтаксис

delegate void Notify(string text); Notify handler = ИмяМетода; handler("abcde");

Пример

Давайте объявим делегат и вызовем метод через переменную:

using System; delegate void Notify(string text); class Program { static void Print(string text) { Console.WriteLine(text); } static void Main() { Notify note = Print; note("abcde"); } }

Результат выполнения кода:

"abcde"

Пример

Давайте переназначим переменную делегата другому методу:

using System; delegate void Notify(string text); class Program { static void Print(string text) { Console.WriteLine(text); } static void Show(string text) { Console.WriteLine(text.Length); } static void Main() { Notify note = Print; note = Show; note("12345"); } }

Результат выполнения кода:

5

Пример

Давайте объявим делегат, который возвращает int:

using System; delegate int LengthOf(string text); class Program { static int GetLength(string text) { return text.Length; } static void Main() { LengthOf measure = GetLength; int res = measure("abcde"); Console.WriteLine(res); } }

Результат выполнения кода:

5

Смотрите также

  • класс Action,
    который задаёт делегат без результата
  • группа методов method group,
    которую присваивают делегату
  • мультикаст multicast,
    который объединяет несколько методов
  • ключевое слово event,
    которое часто использует тип делегата
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить