Pasar una función como parámetro en C#

Muhammad Maisam Abbas 16 febrero 2024
  1. Pasar una función como parámetro con el delegado Func<> en C#
  2. Pasar una función como parámetro dentro de otra función con el delegado Action<> en C#
Pasar una función como parámetro en C#

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.

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

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

Artículo relacionado - Csharp Function