Bien défini dans le système, une commission commune, qui est System.Action
, et System.Func
la première n'a pas retourné les valeurs de fonction, qui est exprimée la valeur de retour de fonction. Afin de s'adapter au nombre de paramètres différents, le système définit une série de Action
et Func
, comme le montre la figure suivante:
Parmi eux, le type de paramètre de chaque délégué peut être personnalisé lors de son utilisation, c'est-à-dire qu'un type générique est utilisé, comme l'indication de deux entiers comme paramètres, renvoie un double
type, il peut être exprimé comme:
Func<int, int, double> f = (x, y) => x * 3.0 + y * 2.0;
Un autre exemple est void
une fonction avec un seul paramètre de chaîne et un seul type de retour . Cela peut être exprimé comme suit:
Action<string> print = s => Console.WriteLine(s);
Ou sans paramètres Action
:
Action showTime = () => Console.WriteLine(DateTime.Now);
Les délégués et les expressions Lambda sont généralement utilisés comme paramètres de fonction. Par exemple, le système a une ForEach
fonction qui peut List
traiter chaque élément d' une liste ( ), et que ce "traitement" est un Action
type de délégué, vous pouvez l'utiliser. Une expression Lambda comme un paramètre. ForEach
Le prototype de la fonction est:
List<T>.ForEach(Action<T> a)
Des exemples d' ListForEach.csshiyongLambda
expressions ForEach
sont utilisés comme paramètres pour afficher et trouver le nombre total de lettres dans un mot:
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);
}
}