Оператор delegate создает анонимный метод, который можно преобразовать в тип делегата. Анонимный метод можно преобразовать в типы, такие как System.Action и System.Func<TResult> типы, используемые в качестве аргументов во многих методах.
C#
Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4)); // output: 7
Примечание
Лямбда-выражения предоставляют более краткий и экспрессивный способ создания анонимной функции. Используйте оператор => для создания лямбда-выражения:
C#
Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4)); // output: 7
См. подробнее о возможностях лямбда-выражений (например, об использовании внешних переменных).
При использовании оператора delegate вам, возможно, нужно будет пропустить список параметров. В таком случае созданный анонимный метод можно будет преобразовать в тип делегата с любым списком параметров, как показано в примере ниже:
C#
Action greet = delegate { Console.WriteLine("Hello!"); };
greet();
Action<int, double> introduce = delegate { Console.WriteLine("This is world!"); };
introduce(42, 2.7);
// Output:// Hello!// This is world!
Это единственная функция анонимных методов, которые не поддерживаются лямбда-выражениями. Во всех остальных случаях лямбда-выражение является предпочтительным способом написания встроенного кода. Можно использовать dis карта s для указания двух или более входных параметров анонимного метода, который не используется методом:
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв:
Присоединитесь к серии встреч для создания масштабируемых решений искусственного интеллекта на основе реальных вариантов использования с другими разработчиками и экспертами.