我因为试图在标题中使用单词问题而大喊大叫,所以这就是我想出来的。无论如何,这是关于参数类型的纯学术问题。
好的,所以这就是我得到的。
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));
}
}
}
这对我来说是清楚明确的(敏锐的读者会认为这是C# in Depth第249页上的一个例子的简单扩展)。我完全了解正在发生的事情,编译器说有一些类型(为T
定义,然后为Ttwo
定义)。我不明白的是为什么在第65页上示例只有一个类型参数。
List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv);
在这种情况下,编译器如何了解T
?
答案 0 :(得分:9)
我们没有足够的信息可以回答。也许T是在周围的类上定义的?
public class SomeClass<T> {
List<TOutput> ConvertAll<TOutput>(Converter<T, TOutput> conv);
}
如果这是List<T>
的{{3}}方法的示例,那么我的建议是这样的。