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