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
Upcoming Events

.NET Insight

Sign up for our newsletter.

I agree to this site's Privacy Policy.