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