2017-02-23 206 views
0

我想知道這兩種用法的區別是什麼在c#上添加了監聽器。在我的腳本上,兩者都在工作。但我想應該有區別?謝謝 !使用AddListener的方法

btn.onClick.AddListener(() => PickAPuzzle()); 

btn.onClick.AddListener (PickAPuzzle); 

回答

1

兩個是相同的,第一是使用通過顯式的過載,而第二使用方法組,其中,所述編譯器選擇正確的過載的稍長的形式(見:What is a Method Group in C#?)。

AddListener()是一樣的,它們收到的代表實際上是相同的。區別在於語法速記。

+1

第一行不是調用該方法的方法的委託,第二行是該方法的直接委託?如果是這樣,第二行不會(非常非常輕微)更有效率? – gobes

+1

@gobes另一個考慮因素是如果編譯器會優化這個併產生相同的編譯代碼 – Sharky

+1

@gobes我有點難以理解。兩者都有效地生成相同的代表 - 一個更明確,另一個更不明顯。 – STW