有人可以解释我(或显示规范/文档)为什么不允许以下内容:
string[] fiveFoos = Enumerable.Range(1, 5).Select(GetFoo).ToArray();
Run Code Online (Sandbox Code Playgroud)
...
static string GetFoo()
{
return "Foo";
}
Run Code Online (Sandbox Code Playgroud)
只有这将编译:
string[] fiveFoos = Enumerable.Range(1, 5).Select(i => GetFoo()).ToArray();
Run Code Online (Sandbox Code Playgroud)
从中投射的整数Enumerable.Range是不相关的,并且该方法GetFoo是无参数的并且清楚地返回String,所以为什么我仍然会得到以下编译器错误:
错误CS0411无法从用法中推断出方法'Enumerable.Select(IEnumerable,Func)'的类型参数.尝试显式指定类型参数.
Select这里需要一个Func<int, string>- 你的GetFoo方法需要采取int这个工作.
方法组转换通过推断采用适当参数的方法的重载来工作 - 这里没有一个.The integer projected from Enumerable.Range is not relevant - 在这个用例中,它可能与您无关,但它与编译器有关!
| 归档时间: |
|
| 查看次数: |
125 次 |
| 最近记录: |