10
votes

Comment passer d'action avec deux paramètres à l'aide de la méthode Lambda Expression?

J'ai une classe qui prend une action dans son constructeur.

Exemple: P>

public CustomClass(Action<Path, TextBlock> insert)
{

  // logic here...

}


2 commentaires

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.


4 Réponses :


6
votes

à Lamba, vous pouvez passer deux paramètres comme tels:

(x, y) => { x.DoSomething(); y.DoSomethingElse(); }


5 commentaires

Oui, mais vous devriez également lui montrer comment changer son constructeur pour pouvoir accepter que action


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;)



14
votes

Pour passer 2 paramètres à l'action, définissez simplement l'action Insérer en tant qu'action code> et lorsque vous appelez cela le faire comme suit:

var custom = new CustomClass((o,u) => {LayoutRoot.Children.Add(o); somethingElse(u)});


1 commentaires

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!



2
votes

Soit vous demandez xxx pré>

ou p>

CustomClass class = new CustomClass( (x,y) => DoSomething(x,y) );


0 commentaires

2
votes

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: xxx

Si vous devez effectuer plus d'une instruction dans un Lambda, vous pouvez entourer le corps de la Lambda avec des accolades: xxx

Vous pouvez en savoir plus sur Syntaxe Lambda ici sur MSDN .


0 commentaires