Я не понимаю, почему следующее поведение ведет себя так, как оно есть. Я даже не знаю, вызвано ли это скрытием или чем-то еще.
class A<T>
{
public class B : A<int>
{
public void b()
{
Console.WriteLine(typeof(T).ToString());
}
public class C : B
{
public void c()
{
Console.WriteLine(typeof(T).ToString());
}
}
public class D : A<T>.B
{
public void d()
{
Console.WriteLine(typeof(T).ToString());
}
}
}
}
class Program
{
static void Main(string[] args)
{
A<string>.B.C c = new A<string>.B.C();
A<string>.B.D d = new A<string>.B.D();
c.c();
c.b();
d.d();
d.b();
}
}
Вопросы:
-
Почему
c.c()создает System.String, аc.b()создаетSystem.Int32? -
Почему
d.d()иd.b()создаютSystem.Stringи не ведут себя точно так же, как классC?