void Main() { Derived d = new Derived(); } class Base { public Base() { Console.WriteLine( "Base.Instance.Constructor" ); this.m_Field3 = new Tracker( "Base.Instance.Field3 (in instance constructor)" ); this.Virtual(); } static Base() { Console.WriteLine( "Base.Static.Constructor" ); } virtual public void Virtual() { Console.WriteLine( "Base.Instance.Virtual" ); } private Tracker m_Field1 = new Tracker( "Base.Instance.Field1" ); private Tracker m_Field2 = new Tracker( "Base.Instance.Field2" ); private Tracker m_Field3; static private Tracker s_Field1 = new Tracker( "Base.Static.Field1" ); static private Tracker s_Field2 = new Tracker( "Base.Static.Field2" ); } class Derived : Base { public Derived() { Console.WriteLine( "Derived.Instance.Constructor" ); this.m_Field3 = new Tracker( "Derived.Instance.Field3 (in instance constructor)" ); } static Derived() { Console.WriteLine( "Derived.Static.Constructor" ); } override public void Virtual() { Console.WriteLine( "Derived.Instance.Virtual" ); } private Tracker m_Field1 = new Tracker( "Derived.Instance.Field1" ); private Tracker m_Field2 = new Tracker( "Derived.Instance.Field2" ); private Tracker m_Field3; static private Tracker s_Field1 = new Tracker( "Derived.Static.Field1" ); static private Tracker s_Field2 = new Tracker( "Derived.Static.Field2" ); } class Tracker { public Tracker( string text ) { Console.WriteLine( text ); } }
se apasa F5 si apoi se admira rezultatul:
Derived.Static.Field1 Derived.Static.Field2 Derived.Static.Constructor Derived.Instance.Field1 Derived.Instance.Field2 Base.Static.Field1 Base.Static.Field2 Base.Static.Constructor Base.Instance.Field1 Base.Instance.Field2 Base.Instance.Constructor Base.Instance.Field3 (in instance constructor) Derived.Instance.Virtual Derived.Instance.Constructor Derived.Instance.Field3 (in instance constructor)
Concluzia? membrii claselor se initializeaza in ordinea urmatoare:
- membrii statici initializati la declarare
- constructorul static
- membrii de instanta initializati la declarare
- clasa de baza
- constructorul
Niciun comentariu:
Trimiteți un comentariu
S-ar putea sa nu vedeti comentariul aparand imediat, asta inseamna ca el asteapta aprobarea mea. Aceasta e o masura anti-SPAM.