Справочник по C#. Оператор delegatedelegate operator (C# reference)

Оператор delegate создает анонимный метод, который можно преобразовать в тип делегата:The delegate operator creates an anonymous method that can be converted to a delegate type:

Func<int, int, int> sum = delegate (int a, int b) { return a + b; };
Console.WriteLine(sum(3, 4));  // output: 7

Примечание

Начиная с C# 3, лямбда-выражения позволяют быстрее и проще создавать анонимные функции.Beginning with C# 3, lambda expressions provide a more concise and expressive way to create an anonymous function. С помощью оператора => создайте лямбда-выражение:Use the => operator to construct a lambda expression:

Func<int, int, int> sum = (a, b) => a + b;
Console.WriteLine(sum(3, 4));  // output: 7

См. подробнее о возможностях лямбда-выражений (например, об использовании внешних переменных).For more information about features of lambda expressions, for example, capturing outer variables, see Lambda expressions.

При использовании оператора delegate вам, возможно, нужно будет пропустить список параметров.When you use the delegate operator, you might omit the parameter list. В таком случае созданный анонимный метод можно будет преобразовать в тип делегата с любым списком параметров, как показано в примере ниже:If you do that, the created anonymous method can be converted to a delegate type with any list of parameters, as the following example shows:

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!

Это единственная функция анонимных методов, которая не поддерживается лямбда-выражениями.That's the only functionality of anonymous methods that is not supported by lambda expressions. Во всех остальных случаях лямбда-выражение является предпочтительным способом написания встроенного кода.In all other cases, a lambda expression is a preferred way to write inline code.

Вы также можете использовать ключевое слово delegate для объявления типа делегата.You also use the delegate keyword to declare a delegate type.

Спецификация языка C#C# language specification

Дополнительные сведения см. в разделе Выражения анонимных функций в спецификации языка C#.For more information, see the Anonymous function expressions section of the C# language specification.

См. также разделSee also