87 votes

Que signifie la syntaxe '=>' en C #?

Je viens de découvrir cette syntaxe dans certaines des questions de ce forum, mais Google et tout autre moteur de recherche ont tendance à bloquer tout sauf les lettres et les chiffres dans la recherche, il est donc impossible de rechercher "=>".

Alors, quelqu'un peut-il me dire de quoi il s'agit et comment il est utilisé?

89voto

Jon Skeet Points 692016

C'est le lambda de l'opérateur, utilisé pour les expressions lambda. Ce sont essentiellement une forme courte de l' anonyme méthodes introduites dans C# 2, mais peut également être converti en une expression d'arbres.

À titre d'exemple:

Func<Person, string> nameProjection = p => p.Name;

est équivalent à:

Func<Person, string> nameProjection = delegate (Person p) { return p.Name; };

Dans les deux cas, vous êtes en train de créer un délégué avec un Person paramètre, le retour du nom de cette personne (comme une chaîne de caractères).

Voir aussi:

(Et en effet beaucoup de questions similaires - essayez le lambda et le lambda-expressions balises.)

17voto

Sahuagin Points 3209

C'est une autre forme de notation de fonction. Les éléments suivants sont à peu près équivalents:

 // explicit function
int MyFunc(int pParam)
{
   return pParam;
}

// delegate function
Func<int, int> MyFunc = delegate(int pParam) { return pParam; };

// lambda expression
Func<int, int> MyFunc = x => x;
 

Considérez une expression lambda comme disant: «donné quelque chose, retournez quelque chose». Dans l'exemple ci-dessus, la fonction x => x dit "étant donné x, retourne x". (Bien que les expressions lambda n'aient pas nécessairement besoin de renvoyer quelque chose, auquel cas vous pourriez les lire comme "étant donné x, faites quelque chose avec x".)

14voto

Serhat Özgel Points 10010

Cela signifie génialité. Par exemple

 x => x + 1
 

représente une méthode qui prend x comme paramètre et en retourne le successeur.

 button.Click += new EventHandler((sender, e) => methodInfo.Invoke(null, new object[] { sender, e }));
 

affecte un gestionnaire d'événements à un bouton en invoquant une méthode contenue dans MethodInfo.

10voto

Steve Points 3520

voici un exemple simple de msdn

 delegate int del(int i);
del myDelegate = x => x * x;
int j = myDelegate(5); //j = 25
 

Tout ce qui précède = = sont les paramètres d'entrée et tout ce qui est après est l'expression. Vous pouvez avoir plusieurs paramètres d'entrée. Les lambdas sont principalement utilisées avec Linq.

8voto

milot Points 859

Au lieu d'utiliser une méthode anonyme comme celle-ci:

 somevar.Find(delegate(int n)
{
   if(n < 10)
      return n;
});
 

vous l'écrivez simplement comme ceci:

 somevar.Find(n => n < 10);
 

Il prendra le type de données basé sur la valeur de retour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X