Bien definido en el sistema una comisión común, que es System.Action
, y System.Func
la primera no devolvió valores de función, que se expresa en el valor de retorno de función. Para adaptarse al número de parámetros diferentes, el sistema define una serie de Action
y Func
, como se muestra en la siguiente figura:
Entre ellos, se puede personalizar el tipo de parámetro de cada delegado cuando se utiliza, es decir, se utiliza un tipo genérico, como indicar dos enteros como parámetros, Devuelve un double
tipo, se puede expresar como:
Func<int, int, double> f = (x, y) => x * 3.0 + y * 2.0;
Otro ejemplo es void
una función con un solo parámetro de cadena y tipo de retorno . Esto se puede expresar como:
Action<string> print = s => Console.WriteLine(s);
O sin parámetros Action
:
Action showTime = () => Console.WriteLine(DateTime.Now);
Los delegados y las expresiones Lambda se usan generalmente como parámetros de función. Por ejemplo, el sistema tiene una ForEach
función que puede List
procesar cada elemento de una lista ( ), y que este "procesamiento" es un Action
tipo de delegado, puede usarlo Una expresión Lambda como parámetro. ForEach
El prototipo de la función es:
List<T>.ForEach(Action<T> a)
Las ListForEach.csshiyongLambda
expresiones de ejemplo ForEach
se utilizan como parámetros para mostrar y encontrar el número total de letras en una palabra:
public class ListForEach
{
static void Main(){
List<string> words = new List<string>(){
"Apple", "Banana", "Orange", "Mango"};
words.ForEach(s => Console.WriteLine(s));
int letters = 0;
words.ForEach(s => letters += s.Length);
Console.WriteLine(letters);
}
}