簡體   English   中英

將Lambda表達式分配為C#中的函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM