C # delegación-introducción y uso de Func y Action

Este artículo se reproduce en:
https://www.cnblogs.com/champaign/p/5889608.html
Func es una especie de delegación, que se agregó en 3.5, en 2.0 usamos el delegado para usar Delegate, Func se encuentra en System.Core En el espacio de nombres, el uso de la delegación puede mejorar la eficiencia, por ejemplo, el uso de la reflexión puede compensar el rendimiento perdido por la reflexión.

Las funciones de Action y Func <T, TResult> son las mismas, pero no hay ningún tipo de retorno para Action,

Func <T, T, Resultado>: con parámetros y tipo de retorno
Acción, ni retorno ni parámetros,

Func <T, TResult>
se puede dividir en las siguientes formas:

1。Func <T, TResult>
2。Func <T , T1, TResult>
3。Func <T, T1, T2, TResult>
4。Func <T, T1, T2, T3, TResult>
5。Func <T, T1, T2, T3, T4, TResultado>

Hable sobre el significado de cada parámetro por separado, TResult representa el tipo representado
por el valor devuelto por el delegado, T, T1, T2, T3, T4 representa el tipo de parámetro del método llamado por el delegado,

Los siguientes son ejemplos de uso:

Func <int, bool> myFunc = null; // Todas las variables

myFunc = x => CheckIsInt32 (x);
// La expresión Lambda se usa para el lugar donde el delegado encapsula el método

private bool CheckIsInt32 (int pars) // método encapsulado
{
  return pars == 5;
}

bool ok = myFunc (5); // Llamar al delegado

MSDN: http: //msdn.microsoft.com/zh-cn/library/bb534303 (VS.95) .aspx

Pero, ¿qué pasa si necesitamos el método encapsulado para no devolver ningún valor? ¡Solo usa Action!

Puede usar
delegados de Acción <T1, T2, T3, T4> para pasar métodos como parámetros, sin declarar explícitamente delegados personalizados. El método encapsulado debe corresponder a la firma del método definida por este delegado. Es decir, el método encapsulado debe tener cuatro parámetros que se le pasan por valor y no puede devolver un valor. (En C #, este método debe devolver nulo. En Visual Basic, debe definirse a través de la estructura Sub ... End Sub.) En general, este método se utiliza para realizar una operación.

El método de uso es similar a Func!

MSDN: http: //msdn.microsoft.com/zh-cn/library/bb548654 (VS.95) .aspx

Acción: no hay retorno ni parámetro, el uso es el siguiente:

Acción
acción = nulo; // Definir acción

action = CheckIsVoid; // Método del paquete, solo necesita el nombre del método

action (); // Llamar

Resumen:

El uso de Func <T, TResult> y Action, Action en lugar de Delegate es en realidad para simplificar el código, usar menos código para lograr el mismo efecto, no es necesario declarar un delegado que mostramos.

El último parámetro de Func <T, TResult> es siempre el tipo de retorno, mientras que Action no tiene ningún tipo de retorno y Action no tiene ningún tipo de retorno ni entrada de parámetros.

Publicado 18 artículos originales · elogiado 0 · visitas 233

Supongo que te gusta

Origin blog.csdn.net/qq_39217004/article/details/105465485
Recomendado
Clasificación