[英]Assign lambda expression as a function in C#
我是C#的新手,但是來自c ++的我們可以做的事情是內聯創建lambda函數。 我正在嘗試這樣的事情,但是沒有用。 有人可以教我如何做這樣的事情嗎?
playButton.Click += (object sender, RoutedEventArgs e) => (getController.startPlay());
在某些情況下,您可能需要為lambda的主體使用一個塊,尤其是當您需要執行多個語句時:
playButton.Click += (s, e) => { getController.startPlay(); Trace.Write("Play..."); };
對於實際上只是一個表達式的lambda,您可以省略該塊(也不需要括號)。 例如:
Func<int> someDelegate = () => 42;
您的代碼應該工作,除了一件事之外,當您加上括號(...)
,兩者之間的部分必須是一個表達式 ,即。 “ 有價值的東西 ”
所以這:
... => (getController.startPlay());
會給你:
CS0201僅賦值,調用,遞增,遞減和新對象表達式可以用作語句
請注意,即使該方法返回了某些內容,也可能無法自動適應您要用於該事件的委托,在這種情況下,會出現類似的錯誤,但原因不同,因此,使startPlay
返回值不會也不行。
無論如何,要使其正常工作,您只需刪除括號即可:
... => getController.startPlay();
然后,代碼應該可以按您期望的方式工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.