【发布时间】:2016-12-25 09:21:14
【问题描述】:
有人可以向我解释为什么下面的代码会输出它的作用吗? 为什么第一个是T是String,不是Int32,为什么下一个输出是相反的情况?
这个谜题来自interview with Eric Lippert
当我查看代码时,我真的不知道它是 Int32 还是 String:
public class A<T>
{
public class B : A<int>
{
public void M() { System.Console.WriteLine(typeof(T)); }
public class C : B { }
}
}
public class P
{
public static void Main()
{
(new A<string>.B()).M(); //Outputs System.String
(new A<string>.B.C()).M(); //Outputs System.Int32
Console.Read();
}
}
【问题讨论】:
标签: c# generics inheritance