Base constructor in C# - Which gets called first?

Base constructor in C# - Which gets called first?

In C#, the base constructor is called before the derived class constructor. This is because the derived class inherits from the base class, and as a result, the base class constructor needs to be executed before the derived class constructor.

For example, consider the following code:

public class MyBaseClass { public MyBaseClass() { Console.WriteLine("Base constructor called"); } } public class MyDerivedClass : MyBaseClass { public MyDerivedClass() { Console.WriteLine("Derived constructor called"); } } 

If you create an instance of MyDerivedClass, the output will be:

Base constructor called Derived constructor called 

This demonstrates that the base constructor is always called before the derived constructor.

Examples

  1. C# base constructor order example:

    class BaseClass { public BaseClass() { Console.WriteLine("Base constructor called."); } } class DerivedClass : BaseClass { public DerivedClass() { Console.WriteLine("Derived constructor called."); } } 

    Description: This code demonstrates that the base class constructor is called before the derived class constructor.

  2. C# constructor execution order with inheritance:

    class BaseClass { public BaseClass() { Console.WriteLine("Base constructor called."); } } class DerivedClass : BaseClass { public DerivedClass() : base() { Console.WriteLine("Derived constructor called."); } } 

    Description: Explicitly using base() in the derived class constructor ensures the base class constructor is called first.

  3. C# base class constructor call in derived class:

    class BaseClass { public BaseClass() { Console.WriteLine("Base constructor called."); } } class DerivedClass : BaseClass { public DerivedClass() : base() { Console.WriteLine("Derived constructor called."); } } 

    Description: Demonstrates calling the base class constructor explicitly using base() in the derived class constructor.

  4. C# constructor chaining and base class initialization:

    class BaseClass { public BaseClass(string message) { Console.WriteLine($"Base constructor called with message: {message}"); } } class DerivedClass : BaseClass { public DerivedClass() : base("Hello from base") { Console.WriteLine("Derived constructor called."); } } 

    Description: Shows constructor chaining and initializing the base class constructor with a parameter.

  5. C# multiple base classes constructor order:

    class BaseClass1 { public BaseClass1() { Console.WriteLine("BaseClass1 constructor called."); } } class BaseClass2 { public BaseClass2() { Console.WriteLine("BaseClass2 constructor called."); } } class DerivedClass : BaseClass1, BaseClass2 { public DerivedClass() { Console.WriteLine("Derived constructor called."); } } 

    Description: Illustrates the order of execution when a class has multiple base classes.

  6. C# base class constructor and instance variables:

    class BaseClass { private int baseValue; public BaseClass(int value) { baseValue = value; Console.WriteLine($"Base constructor called with value: {baseValue}"); } } class DerivedClass : BaseClass { public DerivedClass() : base(42) { Console.WriteLine("Derived constructor called."); } } 

    Description: Demonstrates initializing instance variables in the base class constructor and calling it from the derived class.

  7. C# constructor execution order with static members:

    class BaseClass { public static int staticValue; static BaseClass() { staticValue = 10; Console.WriteLine("Static base constructor called."); } } class DerivedClass : BaseClass { public DerivedClass() { Console.WriteLine($"Derived constructor called. Static value: {staticValue}"); } } 

    Description: Highlights the order of execution when dealing with static members in the base class.

  8. C# base class constructor with parameters:

    class BaseClass { public BaseClass(int value) { Console.WriteLine($"Base constructor called with value: {value}"); } } class DerivedClass : BaseClass { public DerivedClass() : base(5) { Console.WriteLine("Derived constructor called."); } } 

    Description: Shows a base class constructor with parameters and how to pass values from the derived class constructor.

  9. C# constructor execution order in nested classes:

    class OuterClass { public class BaseClass { public BaseClass() { Console.WriteLine("Base constructor called."); } } public class DerivedClass : BaseClass { public DerivedClass() { Console.WriteLine("Derived constructor called."); } } } 

    Description: Examines the order of execution in nested classes with a base and derived class.

  10. C# abstract class constructor order:

    abstract class BaseClass { public BaseClass() { Console.WriteLine("Base constructor called."); } } class DerivedClass : BaseClass { public DerivedClass() { Console.WriteLine("Derived constructor called."); } } 

    Description: Shows the order of execution for the constructor in an abstract base class and its derived class.


More Tags

magnific-popup subset-sum gradient same-origin-policy javafx lcc-win32 autocad android-listview propertyinfo azure-databricks

More C# Questions

More General chemistry Calculators

More Housing Building Calculators

More Livestock Calculators

More Statistics Calculators