Passare un metodo come parametro nella funzione C#

Minahil Noor 16 febbraio 2024
  1. Usa il delegato Func per passare un metodo come parametro in C#
  2. Usa il delegato Action per passare un metodo come parametro in C#
Passare un metodo come parametro nella funzione C#

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"));
}

Articolo correlato - Csharp Method

Articolo correlato - Csharp Parameter