Может кто-нибудь объяснить мне, почему приведенный ниже код выводит то, что он делает? Почему T - строка в первой, а не Int32, и почему в следующем выходе это противоположный случай?Наследование и общий тип настройки
Эта головоломка из interview with Eric Lippert
Когда я смотрю через код, я действительно понятия не имею, если он собирается быть Int32 или строка:
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();
}
}
https://blogs.msdn.microsoft.com/ericlippert/2007/07/30/an-inheritance-puzzle-part-two/ –