46 votes

Signification de l'opérateur () => en C#, s'il existe

J'ai lu cette ligne intéressante aquí dans une réponse de Jon Skeet.

La ligne intéressante est celle-ci, où il préconise l'utilisation d'un délégué :

Log.Info("I did something: {0}", () => action.GenerateDescription());

La question est la suivante : quel est cet opérateur ()=>, je me le demande ? J'ai essayé de le googler, mais comme il s'agit de symboles, Google n'a pas été d'une grande aide. Ai-je honteusement manqué quelque chose ?

64voto

Simon Steele Points 8344

Ceci introduit une fonction lambda (délégué anonyme) sans paramètres, c'est équivalent à et fondamentalement un raccourci pour :

delegate void () { return action.GenerateDescription(); }

Vous pouvez également ajouter des paramètres, par exemple :

(a, b) => a + b

C'est à peu près équivalent à :

delegate int (int a, int b) { return a + b; }

10voto

htr Points 91

=> c'est l'opérateur lambda. Lorsque nous n'avons pas de paramètres d'entrée, nous utilisons simplement des parenthèses rondes. () avant l'opérateur lambda.

la syntaxe : (input parameters) => expression

3voto

Jake Pearson Points 9657

Ceci est un exemple d'une expression lambda ; vous pouvez en savoir plus aquí .

3voto

abatishchev Points 42425

Création d'un délégué anonyme à la méthode spécifiée.

Probablement, dans votre cas, ce sera un Func<string>

3voto

PiRX Points 1986

C'est un moyen de passer un délégué anonyme sans paramètres comme une expression lambda.

Similaire à ce qui suit dans .NET 2.0

Log.Info("I did something: {0}", delegate()
            {
                return action.GenerateDescription();
            });

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