Sie können entweder Lambda oder anonymen Delegaten Syntax verwenden - Sie müssen nur den Typ des Arguments angeben, und es wie aus markieren:
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; }
Während ausdrücklich Argumente als ref/out erwartet erklärt wird , Argumenttypen in Lambda-Ausdruck zu deklarieren ist weniger üblich, da der Compiler normalerweise auf sie schließen kann. In diesem Fall leitet der Compiler jedoch die Typen für out- oder ref-Argumente in lambda/anon-Ausdrücken derzeit nicht ab. Ich bin mir nicht sicher, ob dieses Verhalten ein Bug/Versehen ist oder ob es einen Sprachgrund gibt, warum das so sein muss, aber es gibt eine einfache Lösung.
EDIT: habe ich eine schnelle Überprüfung in VS2010 β2, und es sieht immer noch wie Sie die Argumenttypen definieren - sie sind für C# 4 nicht gefolgert
Erkennen diese Art von alt ist, aber ich glaube nicht, dass es ein Duplikat ist. Bei der verknüpften Frage geht es darum, den out-Parameter der parent (?) -Funktion in der anonymen Funktion zu verwenden, während in diesem Fall eine anonyme Funktion deklariert wird, die ihren eigenen out-Parameter hat. – Salvador