Passer une fonction en tant que paramètre en C#

  1. Passer une fonction en paramètre avec le délégué Func<> en C
  2. Passer une fonction comme paramètre à l’intérieur d’une autre fonction avec le délégué Action<> en C

Ce didacticiel présentera des méthodes pour passer une fonction en tant que paramètre à l’intérieur d’une autre fonction en C#.

Passer une fonction en paramètre avec le délégué Func<> en C

Le délégué Func<T1, T-return> définit une fonction avec le paramètre T1 et le type de retour T-return en C#. On peut passer une fonction comme paramètre à l’intérieur d’une autre fonction avec le délégué Func<T1, t-return>. L’exemple de code suivant nous montre comment passer une fonction en paramètre à l’intérieur d’une autre fonction avec le délégué 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);
        }
    }
}

Production:

i = 32

Nous avons défini la fonction functionToPass(int x) qui prend une valeur entière comme paramètre, l’incrémente de 10 et renvoie le résultat sous forme de valeur entière. Nous avons passé la fonction functionToPass() en paramètre à la fonction function() avec le délégué Func<int, int>. Nous avons passé la valeur 22 à la fonction functionToPass() à l’intérieur de la fonction function(). Dans la fonction principale, nous avons appelé la fonction avec l’appel de fonction function(functionToPass). Le délégué Func<> ne peut être utilisé que pour passer les fonctions qui renvoient une valeur.

Passer une fonction comme paramètre à l’intérieur d’une autre fonction avec le délégué Action<> en C

Si nous voulons passer une fonction qui ne retourne pas de valeur, nous devons utiliser le délégué Action<> en C#. Le délégué Action<T> fonctionne comme le délégué de fonction; il permet de définir une fonction avec le paramètre T. On peut utiliser le délégué Action<> pour passer une fonction en paramètre à une autre fonction. L’exemple de code suivant nous montre comment passer une fonction en paramètre à l’intérieur d’une autre fonction avec le délégué 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);
        }
    }
}

Production:

increment = 32

Nous avons défini la fonction functionToPass2(int x) qui prend une valeur entière comme paramètre, l’incrémente de 10 et imprime le résultat. Nous avons passé la fonction functionToPass2() en paramètre à la fonction function() avec le délégué Action<int>. Nous avons passé la valeur 22 à la fonction functionToPass2() à l’intérieur de la fonction function2(). Dans la fonction principale, nous avons appelé la fonction avec l’appel de fonction function2(functionToPass2). Le délégué Action<> ne peut être utilisé que pour passer les fonctions qui ne retournent aucune valeur.

Article connexe - Csharp Function

  • Renvoyer plusieurs valeurs à partir d'une fonction en C#
  • Créer une fonction en ligne en C#