繁体   English   中英

如何使用Lambda表达式将两个参数传递给方法?

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

我有一个类在其构造函数中执行操作。

例:

public CustomClass(Action<Path> insert)
{

  // logic here...

}

我目前使用以下代码行实例化此类:

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

我想修改自定义类以包含其他构造函数,如下所示:

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

  // logic here...

}

但是,我对lambda表达式的了解非常基础,所以我无法弄清楚如何实例化自定义类,将操作中的两个参数传递给新构造函数。

任何帮助将不胜感激。

谢谢。

为了将2个参数传递给操作,只需将插入操作定义为Action<T,T2> ,当您调用它时,请执行以下操作:

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

在Lamba中,您可以传递两个参数:

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

你要么问

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

要么

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

第二个构造函数将接受一个接收2个参数的委托。 所以你可以做点什么

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

您可以通过用括号括起参数列表并使用逗号分隔参数来创建一个带有多个参数的lambda表达式:

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

如果你需要在lambda中执行多个语句,你可以用大括号包围lambda的主体:

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

您可以在MSDN上了解有关lambda语法的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM