web-dev-qa-db-fra.com

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

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

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

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

La question est, quel est cet opérateur () =>, je me demande? J'ai essayé Google, mais comme il est fait de symboles, Google ne peut vraiment pas être d'une grande aide. Ai-je embarrassé quelque chose ici?

39
Orca

Cela introduit une fonction lambda (délégué anonyme) sans paramètres, elle est équivalente et essentiellement abrégée pour:

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

Vous pouvez également ajouter des paramètres, donc:

(a, b) => a + b

Cela équivaut à peu près à:

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

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

syntaxe: (input parameters) => expression

8
htr

Ceci est un exemple d'une expression lambda, vous pouvez en savoir plus ici .

3
Jake Pearson

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

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

2
abatishchev

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

Similaire à cela à partir de .NET 2.0

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