Static class lifetime C# with Example
A static class is lazily initialized on member access and lives for the duration of the application domain. void Main() { Console.WriteLine("Static classes are lazily initialized"); Console.WriteLine("The static constructor is only invoked when the class is first accessed"); Foo.SayHi(); Console.WriteLine("Reflecting on a type won't trigger its static .ctor"); var barType = typeof(Bar); Console.WriteLine("However, you can manually trigger it with System.Runtime.CompilerServices.RuntimeHelpers"); RuntimeHelpers.RunClassConstructor(barType.TypeHandle); } // Define other methods and classes here public static class Foo { static Foo() { Console.WriteLine("static Foo.ctor"); } public static void SayHi() { Console.WriteLine("Foo: Hi"); } } public static class Bar { static Bar() { Console.WriteLine("static Bar.ctor"); } }