Passe uma função como um parâmetro em C#

Muhammad Maisam Abbas 16 fevereiro 2024
  1. Passe uma função como um parâmetro com o delegado Func<> em C#
  2. Passe uma função como um parâmetro dentro de outra função com o delegado Action<> em C#
Passe uma função como um parâmetro em C#

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.

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

Artigo relacionado - Csharp Function