HOWTO · Csharp
Cómo pasar un método como parámetro en la función C#
Este artículo introduce cómo pasar un método como parámetro en C#. Incluye el delegado Func y el delegado Action.
Este artículo presentará diferentes métodos para pasar un método como parámetro en la función C#.
- Usando el delegado
Func - Usando el delegado
Action
Usar Func Delegado para pasar un método como parámetro en C#
Usaremos el delegado incorporado Func para pasar un método como parámetro. Un delegado actúa como un puntero de función. La sintaxis correcta para usar este delegado es la siguiente.
public delegate returnType Func<in inputType, out returnType>(InputType arg);
El delegado incorporado Func tiene N parámetros. Los detalles de sus parámetros son los siguientes.
| Parámetros | Descripción | |
|---|---|---|
inputType |
obligatorio | Es el tipo de valores de entrada para este delegado. Puede haber N número de valores de entrada. |
returnType |
obligatorio | Es el tipo de valor de retorno. El último valor de este delegado se considera como el tipo de retorno. |
El siguiente programa muestra cómo podemos usar el delegado Func para pasar un método como parámetro.
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);
}
}
Usar el delegado Action para pasar un método como parámetro en C#
También podemos usar el delegado incorporado Action para pasar un método como parámetro. La sintaxis correcta para usar este delegado es la siguiente.
public delegate void Action<in T>(T obj);
El delegado incorporado Action puede tener 16 parámetros como entrada. Los detalles de sus parámetros son los siguientes.
| Parámetros | Descripción | |
|---|---|---|
T |
obligatorio | Es el tipo de valores de entrada para este delegado. Puede haber 16 valores de entrada. |
El programa de abajo muestra cómo podemos usar el delegado Action para pasar un método como parámetro.
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"));
}