J'ai une classe qui prend une action dans son constructeur.
Exemple: P>
public CustomClass(Action<Path, TextBlock> insert) { // logic here... }
4 Réponses :
à Lamba, vous pouvez passer deux paramètres comme tels:
(x, y) => { x.DoSomething(); y.DoSomethingElse(); }
Oui, mais vous devriez également lui montrer comment changer son constructeur pour pouvoir accepter que action code>
Je crois que si c'est une déclaration composée, vous aurez besoin d'accolades bouclées autour du corps: (x, y) => {x.dosomething (); y.dosomethingOvelingelse (); }
Y a-t-il une paire manquante de {} ici?
@Dathan, désolé, c'était juste édité, ce n'était pas là quand la question était initialement posée.
Ha! @Tony tu m'as taillé pendant quelques secondes: p mais je n'ai pas oublié le {} 's! et il n'a pas eu le bon constructeur initialement;)
Pour passer 2 paramètres à l'action, définissez simplement l'action Insérer en tant qu'action
var custom = new CustomClass((o,u) => {LayoutRoot.Children.Add(o); somethingElse(u)});
Les deux constructeurs n'étaient pas censés être les mêmes - j'ai oublié de formater mes extraits de code comme «code», alors lorsque j'ai posté la question originale, les constructeurs sont apparus identiques, alors j'ai modifié le message pour formater les extraits comme code, et Maintenant, les constructeurs doivent être différents. Quoi qu'il en soit, votre réponse a fonctionné, alors merci encore!
Soit vous demandez ou p> CustomClass class = new CustomClass( (x,y) => DoSomething(x,y) );
Vous pouvez créer une expression lambda qui prend plus d'un paramètre en entourant la liste des paramètres avec des parenthèses et des virgules séparez les paramètres suivants: Si vous devez effectuer plus d'une instruction dans un Lambda, vous pouvez entourer le corps de la Lambda avec des accolades: p> Vous pouvez en savoir plus sur Syntaxe Lambda ici sur MSDN . P> P>
Pour votre référence future, la syntaxe de différentes formes de l'expression Lambda est décrite à la section 7.14 de la spécification C #.
@ERIC: Bien sûr, tous les développeurs C # auront déjà lu la spécification.