Sobes.tech
Middle
126
questionbank

Какие существуют базовые делегаты в .NET и в чем их отличия?

Answer from AI

sobes.tech AI

В .NET Framework и .NET Core есть несколько базовых встроенных делегатов, которые упрощают объявление типов делегатов для общих сценариев:

Action:

  • Представляет метод, который не возвращает значения (void).
  • Может принимать от 0 до 16 входных параметров.
// Делегат без параметров и без возвращаемого значения
Action simpleAction = () => Console.WriteLine("Simple Action"); 

// Делегат с одним параметром
Action<int> printNumber = num => Console.WriteLine(num);

Func:

  • Представляет метод, который возвращает значение.
  • Может принимать от 0 до 16 входных параметров.
  • Последний параметр шаблона указывает тип возвращаемого значения.
// Делегат без параметров с возвращаемым значением int
Func<int> getRandomNumber = () => new Random().Next();

// Делегат с одним параметром int и возвращаемым значением string
Func<int, string> convertToString = num => num.ToString();

Predicate:

  • Представляет метод, который принимает один входной параметр и возвращает boolean значение.
  • Используется для определения набора критериев.
// Делегат с одним параметром int, возвращающий bool
Predicate<int> isEven = num => num % 2 == 0;