我已经搜索了一些关于类型推断的信息,但我似乎无法将任何解决方案应用于我的特定问题。
我在构建和传递函数方面做了很多工作。在我看来,这似乎应该能够推断出 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;
});
我想我只想知道为什么它会以这种方式工作以及任何解决方法。