我是c#的新手但是来自c ++我们有一些你可以做的内联创建lambda函数。我正在尝试这样的事情,但是没有用。有人能告诉我怎么做这样的事吗?
playButton.Click += (object sender, RoutedEventArgs e) => (getController.startPlay());
答案 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
然后代码应该按照您的预期工作。