有了這些基本的定義簡單的LINQ表達式將無法編譯
bool MyFunc(string input)
{
return false;
}
var strings = new[] {"aaa", "123"};
我不知道爲什麼這不會編譯:
var b = strings.Select(MyFunc);
但這會:
var c = strings.Select(elem => MyFunc(elem));
錯誤消息是「方法的類型參數System.Linq.Enumerable.Select(System.Collections.Generic.IEnumerab le,System.Func)'不能從使用中推斷出來。「
ReSharper的錯誤提示說,它混淆
和 之間Select(this IEnumerable<string>, Func<string, TResult>)
Select(this IEnumerable<string>, Func<string, int, TResult>)
...但MYFUNC簽名是明確的 - 它只是需要一個(字符串)參數。
任何人都可以在這裏發光?
所以*不*不合理的我覺得編譯器會想辦法... – 2011-03-09 12:52:56
@Cristi:不...儘管試圖從規範中辨別出它應該如何工作是棘手的。我認爲規範中的類型推斷部分就是將「這裏是龍」寫成的。 – 2011-03-09 12:54:44
我們決定改變這種行爲,當它變成C#3時已經太遲了,所以我們把它放在C#4中。 – 2011-03-09 15:25:55