Quando S
e T
sono differenti, questo funziona:T di Func <S, T> viene dedotto dall'output dell'espressione lambda solo quando S e T sono diversi?
public static void Fun<S, T>(Func<S, T> func)
{
}
Fun((string s) => true); //compiles, T is inferred from return type.
Ma,
public static void Fun<T>(Func<T, T> func)
{
}
Fun(t => true); //can't infer type.
Nel primo esempio, dal momento T
viene dedotto dal tipo di ritorno di espressione lambda, non può T
nel anche il secondo esempio può essere dedotto? Suppongo che lo faccia, ma perché non è noto il primo T
, quando è noto il secondo T
di Func<T, T>
, dopo tutto T == T
giusto? Oppure esiste un ordine per i tipi dedotti in caso di Func
s?
'S' non è dedotto nel primo esempio, quindi non è una questione di differenza. Sono d'accordo che sembra che l'inferenza dovrebbe funzionare nel secondo esempio. – Jodrell
@Jodrell sure 'S' non è dedotto, non può, ma' T' è, non è vero .. – nawfal