簡體   English   中英

為什么匿名委托可以省略參數,但lambdas不能?

[英]Why can anonymous delegates omit arguments, but lambdas can't?

//ok
Action<int> CallbackWithParam1 = delegate { };    

//error CS1593: Delegate 'System.Action<int>' does not take 0 arguments
Action<int> CallbackWithParam2 = () => { };   

只是想知道為什么差異真的。 : - /

賈里德當然是對的。 要添加更多詳細信息:

  • 幾乎沒有人使用“跳過參數列表”語法。
  • 我們沒有lambda 需要該功能的場景。
  • 該功能使類型推斷和重載分辨率復雜化,並使兩者都更有可能失敗。
  • 您希望該功能使用什么語法? Action<int> c = => {}; ??? 我不希望將=>變成一元前綴運算符。

所以一方面我們有專業人士的名單:

  • Lambdas與不必要的任何人都知道或使用的不必要的C#2.0功能保持一致 - 坦率地說,我們希望我們從未在第一時間做過這個功能

和缺點:

  • 實現使已經復雜的類型推斷和重載決策算法復雜化
  • 功能導致用戶更多的bug可能性,代表功率沒有相應的增益。
  • 沒有明顯好的語法

如果你被列出了利弊列表,你會做什么? 我希望“實現功能”不是你的選擇; 這不是我們的。

它基本上就像它們是具有不同支持方案集的不同特征一樣簡單。 這幾乎就像問

為什么lambda是表達式,但委托只能是塊?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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