HOWTO · Csharp
Passare un metodo come parametro nella funzione C#
Questo articolo introduce come passare un metodo come parametro in C#. Include Func delegate e Action delegate.
In questa pagina
Questo articolo introdurrà diversi metodi per passare un metodo come parametro nella funzione C#.
- Utilizzo del delegato
Func - Utilizzo del delegato
Action
Usa il delegato Func per passare un metodo come parametro in C#
Useremo il delegato incorporato Func per passare un metodo come parametro. Un delegato agisce come un puntatore a funzione. La sintassi corretta per utilizzare questo delegato è la seguente.
public delegate returnType Func<in inputType, out returnType>(InputType arg);
Il delegato incorporato Func ha N parametri. I dettagli dei suoi parametri sono i seguenti.
| Parametri | Descrizione | |
|---|---|---|
inputType |
obbligatorio | È il tipo di valori di input per questo delegato. Può esserci un numero N di valori di input. |
returnType |
obbligatorio | È il tipo di valore restituito. L’ultimo valore di questo delegato è considerato come il tipo restituito. |
Il programma seguente mostra come possiamo usare il delegato Func per passare un metodo come parametro.
public class MethodasParameter {
public int Method1(string input) {
return 0;
}
public int Method2(string input) {
return 1;
}
public bool RunMethod(Func<string, int> MethodName) {
int i = MethodName("This is a string");
return true;
}
public bool Test() {
return RunMethod(Method1);
}
}
Usa il delegato Action per passare un metodo come parametro in C#
Possiamo anche usare il delegato incorporato Action per passare un metodo come parametro. La sintassi corretta per utilizzare questo delegato è la seguente.
public delegate void Action<in T>(T obj);
Il delegato incorporato Action può avere 16 parametri come input. I dettagli dei suoi parametri sono i seguenti.
| Parametri | Descrizione | |
|---|---|---|
T |
obbligatorio | È il tipo di valori di input per questo delegato. Possono essere presenti 16 valori di input. |
Il programma seguente mostra come possiamo usare il delegato Action per passare un metodo come parametro.
public class MethodasParameter {
public int Method1(string input) {
return 0;
}
public int Method2(string input) {
return 1;
}
public bool RunTheMethod(Action myMethodName) {
myMethodName();
return true;
}
RunTheMethod(() => Method1("MyString1"));
}