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.