参数类型破坏了我的Func <shui>

Ken*_*enn 8 c# generics

我因为试图在标题中使用单词问题而大喊大叫,所以这就是我想出来的.无论如何,这是关于参数类型的纯学术问题.

好的,所以这就是我得到的.

using System;
namespace TypeParamTest 
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            PrintType(1, new object());
            Console.ReadKey();
        }
        static void PrintType<T, Ttwo>(T first, Ttwo second)
        {
            Console.WriteLine(typeof(T) + " : " + typeof(Ttwo));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说是清楚明确的(敏锐的读者会认为这是在深度C#第249页上找到的一个例子的简单扩展).我完全了解正在发生的事情,编译器说有一些类型(要定义T,然后为Ttwo).我不明白的是为什么在第65页上示例只有一个类型参数.

List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv);
Run Code Online (Sandbox Code Playgroud)

T在这种情况下,编译器如何知道?

Chr*_*ain 9

我们没有足够的信息可以回答.也许T是在周围的类上定义的?

public class SomeClass<T> {
    List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv);
}
Run Code Online (Sandbox Code Playgroud)

如果这是一个例子List<T>ConvertAll方法,那么我的建议是上述的情况.