Initialize Objects Properly: Listing 2: C#, Examine the Initialization Order

This sample shows you the initialization order for a hierarchy of objects. You can see the relationships between the field initializers and the execution of the body of constructors.

public class BaseTrackType
{
   private static Marker staticInit = 
     new Marker("base static - initializer1");
   private static Marker staticInit2 =
     new Marker("base static - initializer2");

   private static Marker staticCtor;

   static BaseTrackType()
   {
     staticCtor = 
       new Marker("base static - ctor");
   }

   private Marker fieldInit = 
     new Marker("base instance - initializer");
   private Marker fieldInit2 =
     new Marker("base instance - initializer2");

   private Marker ctorInit;

   public BaseTrackType()
   {
     ctorInit = new Marker("base instance - ctor");
   }
}

public class DerivedTrackType : BaseTrackType
{
   private static Marker static1Derived = new (Marker
     "derived static - initializer");

   private static Marker staticCtorDerived;

   static DerivedTrackType()
   {
     staticCtorDerived = new Marker("derived static - Ctor");
   }

   private Marker derivedInit = new Marker(
     "derived instance - Initializer");

   private Marker derivedCtor;

   public DerivedTrackType()
   {
     derivedCtor = new Marker("derived instance - Ctor");
   }
}
comments powered by Disqus
Most   Popular
Upcoming Events

.NET Insight

Sign up for our newsletter.

Terms and Privacy Policy consent

I agree to this site's Privacy Policy.