[英]C# generics — why do lambdas work, when simple methods don't?
我無法理解為什么C#編譯器可以推斷出類型
Array.ConvertAll(new int[1], i => Convert.ToDouble(i));
但不是
Array.ConvertAll(new int[1], Convert.ToDouble);
當看起來前者比后者更復雜的推論時。
有人可以解釋為什么會這樣嗎?
此(已存檔)博客文章中詳細介紹了此問題: http : //blogs.msdn.com/b/ericlippert/archive/2007/11/05/c-3-0-return-type-inference-does-不工作-ON-成員groups.aspx
總而言之,據我了解(鏈接是否應該消失); 這是C#3.0中有意識的設計決策,因為它不適合在方法組(第二個例子)上執行類型推斷。
我想很多人都不喜歡這樣,所以C#4.0解決了這個問題(從Visual Studio 2010開始);
“在C#4.0中,當方法組可以明確地與從委托推導出的一組完全固定的參數類型相關聯時,返回類型推斷對方法組參數起作用。一旦與方法組關聯的參數類型已知,則重載解析可以明確地確定方法組中哪個方法是與委托形式參數相關聯的方法;然后我們可以從特定方法到委托返回類型進行返回類型推斷。“
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.