Sobes.tech
Junior
127
questionbank

Какие делегаты ты знаешь?

Answer from AI

sobes.tech AI

Основные типы делегатов в .NET:

  • System.Delegate (базовый абстрактный класс) — основа для всех делегатов.
  • System.MulticastDelegate (наследуется от Delegate) — позволяет делегату содержать несколько методов.
  • Обобщенные делегаты в .NET Framework 3.5+:
    • Action — делегат без возвращаемого значения (void).
    • Action<T> ... Action<T1, T2, T3, T4> — делегаты с одним до четырёх параметров и без возвращаемого значения.
    • Func<TResult> — делегат с возвращаемым значением типа TResult и без параметров.
    • Func<T, TResult> ... Func<T1, T2, T3, T4, TResult> — делегаты с одним до четырёх параметров и возвращаемым значением типа TResult.
    • Predicate<T> — специальный тип Func<T, bool>, представляющий метод, который определяет набор критериев и определяет, соответствует ли указанный объект этим критериям.

Пример использования Action и Func:

// Делегат Action: принимает int, ничего не возвращает
Action<int> printNumber = (num) => Console.WriteLine(num);
printNumber(10); // Выведет 10

// Делегат Func: принимает два int, возвращает int
Func<int, int, int> addNumbers = (a, b) => a + b;
int result = addNumbers(5, 3); // result = 8

Делегаты также используются в событиях (event).