Desculpe por fazer uma pergunta de noob. Estou lendo C# em profundidade, onde o autor escreve em 9.4.3 inferência de tipo de duas fases
static void PrintConvertedValue<TInput,TOutput>
(TInput input, Converter<TInput,TOutput> converter)
{
Console.WriteLine(converter(input));
}
// ...
PrintConvertedValue("I'm a string", x => x.Length);
TInput
não depende de nenhum parâmetro de tipo não fixo, então é fixo em string.
Eu estava tentando esse código, mas falhou:
public class Program
{
public void foo<type1, type2>(List<type1> foo,Func<type1, type2> bar) { }
public static void Main(string[] args)
{
new Program().foo(new List<int>(), (string str)=> str.Lenth);
}
}
Eu queria saber se alguém poderia me mostrar o exemplo "TInput depende de qualquer parâmetro de tipo não fixo", ou seja, como o próprio parâmetro de tipo pode ser dependente de outro parâmetro de tipo para ser inferido?