Vous pouvez utiliser lambda ou la syntaxe délégué anonyme - il vous suffit de préciser le type de l'argument, et la marquer comme sur:
public delegate bool CutoffDateDelegate(out DateTime cutoffDate);
// using lambda syntax:
CutoffDateDelegate d1 =
(out DateTime dt) => { dt = DateTime.Now; return true; };
// using anonymous delegate syntax:
CutoffDateDelegate d2 =
delegate(out DateTime dt) { dt = DateTime.Now; return true; }
Tout en déclarant explicitement arguments ref/out devrait , avoir à déclarer les types d'arguments dans l'expression lambda est moins commun car le compilateur peut normalement les déduire. Dans ce cas, cependant, le compilateur n'inclus pas actuellement les types d'arguments out ou ref dans les expressions lambda/anon. Je ne suis pas certain que ce comportement soit un bogue/une erreur ou s'il y a une raison linguistique pour laquelle cela doit être le cas, mais il y a une solution de contournement assez facile.
EDIT: J'ai fait une vérification rapide dans VS2010 β2, et il semble encore que vous devez définir les types d'arguments - ils ne sont pas inférées pour C# 4.
Realize c'est un peu vieux, mais je ne pense pas que c'est un doublon. La question liée concerne l'utilisation du paramètre out de la fonction parent (?) Dans la fonction anonyme, alors que celle-ci concerne la déclaration d'une fonction anonyme possédant son propre paramètre out. – Salvador