型推論について少し調べましたが、私の特定の問題に解決策を適用できないようです。ネストされたジェネリック関数の型推論
私は、関数を構築したり渡したりするのに多くの作業をしています。これはint型を推測することができるはずです。私が考えることができる唯一のことは、ラムダ戻り型が型推論アルゴリズムでチェックされていないということです。問題をより明確に示すために、私は不要なロジックを取り除いた。
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;
});
私はちょうどそれがなぜこの方法およびあらゆる回避策を働かせるか知りたいと思う。
非常によく似た質問ですが、全く同じではありませんhttp://stackoverflow.com/questions/6090159/inferring-generic-types-with-functional-composition –