Собственный и готовый тип в C#
В основном курсе для лямбд уже использовали
Action и Func. Это тоже делегаты,
только с заранее заданным именем и списком
типов в угловых скобках.
Собственный delegate удобен, когда
одну и ту же сигнатуру передают во многих местах
и хотят короткое имя типа, например Notify.
Запишем оба варианта для одного метода:
void Print(string text) {
Console.WriteLine(text);
}
Notify custom = Print;
Action<string> ready = Print;
custom("a");
ready("b");
delegate void Notify(string text);
Для метода с результатом Func перечисляет
типы параметров и последним - тип возвращаемого
значения. Сравним с именованным делегатом:
int DoubleValue(int n) {
return n * 2;
}
Twice custom = DoubleValue;
Func<int, int> ready = DoubleValue;
Console.WriteLine(custom(3));
Console.WriteLine(ready(3));
delegate int Twice(int n);
Придумайте тип HasText для проверки строки
и метод, который возвращает true,
если длина строки больше нуля.
Сохраните один и тот же метод в HasText
и в готовом типе с одной строкой и результатом bool.
Выведите оба результата
для "x".