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?
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; }
=>
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
Ceci est un exemple d'une expression lambda, vous pouvez en savoir plus ici .
Création d'un délégué anonyme à la méthode spécifiée.
Probablement, dans votre cas, ce sera un Func<string>
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();
});