Passare una funzione come parametro in C#
-
Passa una funzione come parametro con il delegato
Func<>inC# -
Passa una funzione come parametro all’interno di un’altra funzione con il delegato
Azione <>inC#
Questo tutorial introdurrà metodi per passare una funzione come parametro all’interno di un’altra funzione in C#.
Passa una funzione come parametro con il delegato Func<> in C#
Il delegato Func<T1, T-return> definisce una funzione con il parametro T1 e il tipo di ritorno T-return in C#. Possiamo passare una funzione come parametro all’interno di un’altra funzione con il delegato Func<T1, t-return>. Il seguente esempio di codice ci mostra come passare una funzione come parametro all’interno di un’altra funzione con il delegato Func<> in 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);
}
}
}
Produzione:
i = 32
Abbiamo definito la funzione functionToPass(int x) che prende un valore intero come parametro, lo incrementa con 10 e restituisce il risultato come valore intero. Abbiamo passato la funzione functionToPass() come parametro alla funzione function() con il delegato Func<int, int>. Abbiamo passato il valore 22 alla funzione functionToPass() all’interno della funzione function(). Nella funzione principale, abbiamo chiamato la funzione con la chiamata di funzione function(functionToPass). Il delegato Func<> può essere utilizzato solo per passare le funzioni che restituiscono un valore.
Passa una funzione come parametro all’interno di un’altra funzione con il delegato Azione <> in C#
Se vogliamo passare una funzione che non restituisce un valore, dobbiamo usare il delegato Action<> in C#. Il delegato Action<T> funziona esattamente come il delegato della funzione; serve per definire una funzione con il parametro T. Possiamo usare il delegato Action<> per passare una funzione come parametro a un’altra funzione. Il seguente esempio di codice ci mostra come passare una funzione come parametro all’interno di un’altra funzione con il delegato Action<> in 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);
}
}
}
Produzione:
increment = 32
Abbiamo definito la funzione functionToPass2(int x) che prende un valore intero come parametro, lo incrementa con 10 e stampa il risultato. Abbiamo passato la funzione functionToPass2() come parametro alla funzione function() con il delegato Action<int>. Abbiamo passato il valore 22 alla funzione functionToPass2() all’interno della funzione function2(). Nella funzione principale, abbiamo chiamato la funzione con la chiamata di funzione function2(functionToPass2). Il delegato Azione <> può essere utilizzato solo per passare le funzioni che non restituiscono alcun valore.
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