Встречается на 27% собеседований по C#

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

В C# есть несколько видов делегатов:

  1. Обычные делегаты – объявляются с ключевым словом delegate.

    csharp
    delegate void MyDelegate(string message);
  2. Action – обобщённый делегат для методов без возвращаемого значения (до 16 параметров).

    csharp
    Action<int, string> action = (x, s) => Console.WriteLine($"{s}: {x}");
  1. Func – обобщённый делегат для методов с возвращаемым значением (последний параметр – возвращаемый тип).

    csharp
    Func<int, int, int> sum = (a, b) => a + b;
  2. Predicate – делегат для проверки условия (возвращает bool).

    csharp
    Predicate<int> isEven = x => x % 2 == 0;
  3. EventHandler – стандартный делегат для событий.

    csharp
    event EventHandler MyEvent;
  4. Multicast-делегаты – могут содержать несколько методов и вызывать их цепочкой.

    csharp
    MyDelegate del1 = Method1;
    MyDelegate del2 = Method2;
    MyDelegate combined = del1 + del2;

Каждый тип удобен в разных сценариях, особенно Action и Func благодаря обобщённости.

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы