开发者

How to pass action with two parameters using Lambda expression to method?

I have a class that takes an action in it's constructor.

Example:

public CustomClass(Action<Path> insert)
{

  // logic here...

}

I currently instantiate this class using the following line of code:

var custom = new CustomClass((o) => LayoutRoot.Children.Add(o));

I want to modify the custom class to include an additional constructor, such as the following:

public CustomClass(Action<Path, TextBlock> inse开发者_如何学Pythonrt)
{

  // logic here...

}

However, my knowledge of lambda expressions is pretty basic, so I can't figure out how to instantiate the custom class, passing two parameters in the action to the new constructor.

Any help would be greatly appreciated.

Thanks.


In order to pass 2 parameters to the action, just define the insert action as an Action<T,T2> and when you call it do it like this:

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


In Lamba you can pass two parameters as such:

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


Either you are asking

public CustomClass(Action insert, Action insert2) { // logic here... }

or

 public CustomClass(Action<T1, T2> insert) { // logic here... }

The second constructor will take an delegate that receives 2 parameters. So you can do something like

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


You can create a lambda expression that takes more than one parameter by surrounding the parameter list with parentheses and comma separate the parameters:

var custom = new CustomClass((o, tb) => /* use both params somehow */ );

If you need to perform more than one statement in a lambda, you can surround the body of the lambda with braces:

var custom = new CustomClass((o, tb) => { o.DoSomething(); tb.DoSomethingElse() } );

You can learn more about lambda syntax here on MSDN.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜