2010-03-27 4 views
4

J'ai ce code:Trouble with action <T1, T2> et en passant plusieurs paramètres

 s(x => x.Open()); 

s est une méthode qui appelle un paramètre, ce qui est parfaitement bien, comme ceci:

public void s(Action<p1> action) {} 

Ignorant la dénomination conventions, si je fais la méthode comme ci-dessous:

public void s(Action<p1, p2> action) {} 

Comment puis-je transmettre plus de sur e paramètre? Par intérêt, est-il possible d'utiliser le mot-clé params avec l'action <>?

En outre, j'utilise C# 4.0 donc je serais intéressé de voir comment cela peut m'aider d'une certaine manière.

Merci

Répondre

9

Si vous voulez passer plusieurs paramètres à une expression lambda en C# vous devez joindre les paramètres avec parens. Par exemple

s((x,y) => x.Open(y)); 
2
s((x, y) => ...);