Passe uma função como um parâmetro em C#
-
Passe uma função como um parâmetro com o delegado
Func<>emC# -
Passe uma função como um parâmetro dentro de outra função com o delegado
Action<>emC#
Este tutorial irá apresentar métodos para passar uma função como um parâmetro dentro de outra função em C#.
Passe uma função como um parâmetro com o delegado Func<> em C#
O delegado Func<T1, T-return> define uma função com o parâmetro T1 e o tipo de retorno T-return em C#. Podemos passar uma função como um parâmetro dentro de outra função com o delegado Func<T1, t-return>. O exemplo de código a seguir nos mostra como podemos passar uma função como um parâmetro dentro de outra função com o delegado Func<> em C#.
using System;
namespace pass_function_as_parameter {
class Program {
static int functionToPass(int x) {
return x + 10;
}
static void function(Func<int, int> functionToPass) {
int i = functionToPass(22);
Console.WriteLine("i = {0}", i);
}
static void Main(string[] args) {
function(functionToPass);
}
}
}
Resultado:
i = 32
Definimos a função functionToPass(int x) que recebe um valor inteiro como parâmetro, o incrementa com 10 e retorna o resultado como um valor inteiro. Passamos a função functionToPass() como um parâmetro para a função function() com o delegado Func<int, int>. Passamos o valor 22 para a função functionToPass() dentro da função function(). Na função principal, chamamos a função com a chamada de função function(functionToPass). O delegado Func<> só pode ser usado para passar as funções que retornam algum valor.
Passe uma função como um parâmetro dentro de outra função com o delegado Action<> em C#
Se quisermos passar uma função que não retorna um valor, temos que usar o delegado Action<> em C#. O delegado Action<T> funciona como o delegado de função; é usado para definir uma função com o parâmetro T. Podemos usar o delegado Action<> para passar uma função como parâmetro para outra função. O exemplo de código a seguir nos mostra como podemos passar uma função como um parâmetro dentro de outra função com o delegado Action<> em C#.
using System;
namespace pass_function_as_parameter {
class Program {
static void functionToPass2(int x) {
int increment = x + 10;
Console.WriteLine("increment = {0}", increment);
}
static void function2(Action<int> functionToPass2) {
functionToPass2(22);
}
static void Main(string[] args) {
function2(functionToPass2);
}
}
}
Resultado:
increment = 32
Definimos a função functionToPass2(int x) que recebe um valor inteiro como parâmetro, o incrementa com 10 e imprime o resultado. Passamos a função functionToPass2() como um parâmetro para a função function() com o delegado Action<int>. Passamos o valor 22 para a função functionToPass2() dentro da função function2(). Na função principal, chamamos a função com a chamada de função function2(functionToPass2). O delegado Action<> só pode ser usado para passar as funções que não retornam nenhum valor.
Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.
LinkedIn