当S
和T
不同时,这有效:
public static void Fun<S, T>(Func<S, T> func)
{
}
Fun((string s) => true); //compiles, T is inferred from return type.
但,
public static void Fun<T>(Func<T, T> func)
{
}
Fun(t => true); //can't infer type.
在第一个例子中,既然T
是从 lambda 表达式的返回类型推断出来的,那么T
在第二个例子中也不能推断出来吗?我想它正在这样做,但是为什么第一个T
不知道,当第二个T
知道时Func<T, T>
,T == T
好吧?或者在 s 的情况下是否有推断类型的顺序Func
?