将lambda表达式指定为C#中的函数

时间:2018-05-31 07:43:48

标签: c# lambda

我是c#的新手但是来自c ++我们有一些你可以做的内联创建lambda函数。我正在尝试这样的事情,但是没有用。有人能告诉我怎么做这样的事吗?

playButton.Click += (object sender, RoutedEventArgs e) => (getController.startPlay());

2 个答案:

答案 0 :(得分:0)

在某些情况下,您可能需要使用块作为lambda的主体,最明显的是当您需要执行多个语句时:

playButton.Click += (s, e) => { getController.startPlay(); Trace.Write("Play..."); };

对于实际上只是单个表达式的lambda,可以省略该块(也不需要括号)。 E.g:

Func<int> someDelegate = () => 42;

答案 1 :(得分:0)

除了一件事,你的代码应该有效,当你添加括号(...)时,它之间的部分必须是表达式,即。 “评估某事的东西

所以这个:

... => (getController.startPlay());

会给你:

  

CS0201只能将赋值,调用,递增,递减和新对象表达式用作语句

请注意,即使方法返回某些内容,它也可能不会自动适合您尝试用于该事件的委托,在这种情况下会出现类似的错误,但原因不同,因此{{1返回一个值也不起作用。

在任何情况下,要使其正常工作,您只需删除括号:

startPlay

然后代码应该按照您的预期工作。