Delegate — operatorC# (odwołanie)delegate operator (C# reference)

Operator delegate tworzy anonimową metodę, która może zostać przekonwertowana na typ delegata: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

Uwaga

Począwszy od C# 3, wyrażenia lambda zapewniają bardziej zwięzły i jednoznaczny sposób tworzenia anonimowej funkcji.Beginning with C# 3, lambda expressions provide a more concise and expressive way to create an anonymous function. Użyj operatora = > , aby utworzyć wyrażenie lambda:Use the => operator to construct a lambda expression:

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

Aby uzyskać więcej informacji na temat funkcji wyrażeń lambda, na przykład przechwytywania zmiennych zewnętrznych, zobacz lambda Expressions.For more information about features of lambda expressions, for example, capturing outer variables, see Lambda expressions.

Gdy używasz operatora delegate, możesz pominąć listę parametrów.When you use the delegate operator, you might omit the parameter list. W takim przypadku utworzona Metoda anonimowa może zostać przekonwertowana na typ delegata z dowolną listą parametrów, co ilustruje poniższy przykład: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!

Jest to jedyna funkcja metod anonimowych, które nie są obsługiwane przez wyrażenia lambda.That's the only functionality of anonymous methods that is not supported by lambda expressions. We wszystkich innych przypadkach wyrażenie lambda jest preferowanym sposobem pisania kodu śródwierszowego.In all other cases, a lambda expression is a preferred way to write inline code.

Możesz również użyć słowa kluczowego delegate, aby zadeklarować typ delegata.You also use the delegate keyword to declare a delegate type.

specyfikacja języka C#C# language specification

Aby uzyskać więcej informacji, zobacz sekcję wyrażenia funkcji anonimowej C# specyfikacji języka.For more information, see the Anonymous function expressions section of the C# language specification.

Zobacz takżeSee also