Pasar una función como parámetro en C#
-
Pasar una función como parámetro con el delegado
Func<>
enC#
-
Pasar una función como parámetro dentro de otra función con el delegado
Action<>
enC#
Este tutorial presentará métodos para pasar una función como parámetro dentro de otra función en C#.
Pasar una función como parámetro con el delegado Func<>
en C#
El delegado Func<T1, T-return>
define una función con el parámetro T1
y el tipo de retorno T-return
en C#. Podemos pasar una función como parámetro dentro de otra función con el delegado Func<T1, t-return>
. El siguiente ejemplo de código nos muestra cómo podemos pasar una función como parámetro dentro de otra función con el delegado Func<>
en 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);
}
}
}
Producción :
i = 32
Definimos la función functionToPass(int x)
que toma un valor entero como parámetro, lo incrementa con 10
y devuelve el resultado como un valor entero. Pasamos la función functionToPass()
como parámetro a la función function()
con el delegado Func<int, int>
. Pasamos el valor 22
a la función functionToPass()
dentro de la función function()
. En la función principal, llamamos a la función con la llamada de función function(functionToPass)
. El delegado Func<>
solo se puede utilizar para pasar las funciones que devuelven algún valor.
Pasar una función como parámetro dentro de otra función con el delegado Action<>
en C#
Si queremos pasar una función que no devuelve un valor, tenemos que usar el delegado Action<>
en C#. El delegado Action<T>
funciona igual que el delegado de función; se utiliza para definir una función con el parámetro T
. Podemos usar el delegado Action<>
para pasar una función como parámetro a otra función. El siguiente ejemplo de código nos muestra cómo podemos pasar una función como parámetro dentro de otra función con el delegado Action<>
en 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);
}
}
}
Producción :
increment = 32
Definimos la función functionToPass2(int x)
que toma un valor entero como parámetro, lo incrementa con 10
e imprime el resultado. Pasamos la función functionToPass2()
como parámetro a la función function()
con el delegado Action<int>
. Pasamos el valor 22
a la función functionToPass2()
dentro de la función function2()
. En la función principal, llamamos a la función con la llamada de función function2(functionToPass2)
. El delegado Action<>
solo se puede utilizar para pasar las funciones que no devuelven ningún 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