11
當試圖編譯LINQPad下面的代碼:爲什麼泛型類型推斷在這種情況下不起作用?
void Main()
{
DriveInfo.GetDrives().Select(GetProviderName).Dump();
}
static string GetProviderName(DriveInfo drive)
{
// some irrelevant WMI code...
}
我得到以下錯誤:
的類型參數的方法「System.Linq.Enumerable.Select(System.Collections.Generic .IEnumerable,System.Func)'不能從這個用法推斷出來。嘗試明確指定類型參數。
如果我使用像d => GetProviderName(d)
而不是方法組的λ,它工作正常...我很驚訝,因爲我確信,編譯器將能夠推斷方法組的類型。在範圍內沒有其他GetProviderName
方法,並且輸入和輸出類型被明確定義,所以它應該可以隱式轉換爲Func<DriveInfo, string>
...不應該嗎?
阿編譯器的限制,我知道* *我已經看到它之前的工作...上面做在C#3.0的測試。你有什麼參考鏈接? – 2010-05-26 14:19:52
http://togaroga.com/2009/11/smarter-type-inference-with-c-4/ – SLaks 2010-05-26 14:26:11
就是我正在尋找的......謝謝! – 2010-05-26 14:33:53