No entiendo el siguiente fenómeno, ¿podría alguien explicarme por favor lo que obtuve mal?Herencia y propiedades estáticas
public class BaseClass
{
public BaseClass()
{
BaseClass.Instance = this;
}
public static BaseClass Instance
{
get;
private set;
}
}
public class SubClassA : BaseClass
{
public SubClassA()
: base()
{ }
}
public class SubClassB : BaseClass
{
public SubClassB()
: base()
{ }
}
class Program
{
static void Main(string[] args)
{
SubClassA a = new SubClassA();
SubClassB b = new SubClassB();
Console.WriteLine(SubClassA.Instance.GetType());
Console.WriteLine(SubClassB.Instance.GetType());
Console.Read();
}
}
Según entendí, el compilador debe generar un nuevo tipo través de la herencia, que SubClassA y SubClassB son realmente propios tipos con variables estáticas propias. Pero parece que la parte estática de la clase no se hereda sino que se hace referencia a ella: ¿qué me pasa?
Yo no lo entiendo por qué la herencia sólo funciona en los casos, pero tengo que aceptarlo. Gracias por esa información. –
El mismo comportamiento se implementa en PHP y Delphi –
@VladislavRastrusny: No sé cómo es en 2010. Pero ahora en 2016, hay 'self ::' y 'static ::' en PHP. –