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

Featured

  • Copilot AI Billing Shock Met with Meters, Caps and Token-Saving Tools

    GitHub is layering spending limits, expanded credit allowances and increasingly granular usage reporting onto Copilot, while Microsoft is reworking Visual Studio and VS Code to expose -- and reduce -- the cost of agentic development.

  • The AI-Powered Software Development Lifecycle

    René van Osnabrugge makes the case that AI's biggest opportunity in software development is not faster coding -- it's reducing the friction everywhere else in the SDLC.

  • Copilot Usage-Based Billing Gets a Token Dashboard

    Microsoft is keeping Visual Studio's new built-in Agent Skills switched off by default while a public dashboard measures whether their performance gains justify the additional tokens they may consume.

  • VS Code 1.129 Introduces Agent Host and Experimental Agents Window Editor

    Visual Studio Code 1.129 adds a dedicated process for running AI agent sessions and an experimental docked editor for reviewing agent-generated changes.

Subscribe on YouTube