【发布时间】:2013-03-19 18:11:00
【问题描述】:
我搜索了一些关于类型推断的信息,但似乎无法将任何解决方案应用于我的特定问题。
我在构建和传递函数方面做了很多工作。在我看来,这似乎应该能够推断出 int 类型。我唯一能想到的是类型推断算法没有检查 lambda 返回类型。我已经删除了不必要的逻辑以更清楚地显示问题。
Func<T> Test<T>(Func<Func<T>> func)
{
return func();
}
编译:
Func<int> x = Test<int>(() =>
{
int i = 0;
return () => i;
});
但这会产生错误“无法从用法中推断出方法的类型参数。尝试显式指定类型参数”:
Func<int> x = Test(() =>
{
int i = 0;
return () => i;
});
我想我只是想知道为什么它会以这种方式工作以及任何解决方法。
【问题讨论】:
-
非常相似的问题,但不完全相同stackoverflow.com/questions/6090159/…
标签: c# generics type-inference lambda func