Nie rozumiem następującego zjawiska, czy ktoś mógłby mi wyjaśnić, proszę, co zrobiłem źle?Dziedziczenie i właściwości statyczne
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();
}
}
Jak zrozumiałem, kompilator powinien wygenerować nowy typ poprzez dziedziczenie, że SubClassA i SubClassB są naprawdę własne typy z własnych zmiennych statycznych. Ale wydaje się, że statyczna część klasy nie jest dziedziczona, ale odnosi się do niej - co mam źle?
ja nie rozumiem dlaczego dziedziczenia działa tylko w przypadkach, ale muszę się z tym pogodzić. Dziękuję za te informacje. –
To samo zachowanie zostało zaimplementowane w PHP i Delphi –
@ VladladlavRastrusny: Nie wiem, jak to jest w 2010 roku. Ale teraz w 2016 roku są 'self ::' i 'static ::' w PHP. –