Static Constructor In C#

Learn via video courses
Topics Covered

Build an AI-First Career, Master the Complete Skillset

Choose from our industry-leading programs designed for career success

NSDC Certified

Modern Software and AI Engineering Program

Master full-stack development with AI integration

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

Modern Data Science and ML with specialisation in AI

Advanced data science techniques with AI specialization

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

Advanced AIML with Specialisation in Agentic AI

Deep dive into AIML with focus on Agentic systems

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

DevOps, Cloud & AI Platform Engineering

Build and manage AI-powered cloud infrastructure

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program
NSDC Certified

AI Engineering Advanced Certification by IIT-Roorkee

Premier AI engineering certification from IIT-Roorkee

3 MonthsDuration
AI-LedCurriculum
Career SupportSupport
Program highlights
Go to Program
NSDC Certified

AI Forward Deployed Engineer Program

Full-stack engineering, production AI and client-facing consulting

12 MonthsDuration
AI-LedCurriculum
Career SupportSupport
GoogleAmazonPaytm+1000 more
Go to Program

Overview

A Static constructor in C# is a special type of constructor that is associated with a class rather than instances of the class. It is automatically called by the runtime before any static members of the class are accessed or any static methods are called. Unlike regular constructors, a static constructor does not take any parameters and cannot be called directly in code. It is primarily used for initializing static members or performing one-time setup tasks for the class. The static constructor ensures that static members are correctly initialized before they are used, providing a reliable mechanism for managing static state within a C# class.

Declaration of Static Constructor in C#

In C#, you can declare a static constructor using the static keyword along with the class name. It is important to note that a static constructor does not take any parameters and does not have an access modifier.

Here's the syntax for declaring a static constructor in C#:

In the example above, MyClass contains a static constructor denoted by the static keyword followed by the class name (MyClass()). This constructor is automatically called by the runtime before accessing any static members or static methods of the class.

Remember that a class can have only one static constructor, and it will be executed only once during the program's lifetime, ensuring proper initialization of static members before they are used in the application.

Sharpen Your Fundamentals with Free Learning

Example of Static Constructor in C#

Let's see an example of the static constructor.

Example:

Output:

In this example, we have a class MyClass with a static field StaticField, a static constructor, and a static method StaticMethod. The static constructor is defined using the static MyClass() syntax. When the program runs and before accessing any static members of the MyClass, the static constructor is automatically called, and its message "Static constructor is called" will be displayed in the console. The static constructor initializes the StaticField to 42.

Then, we call the static method StaticMethod() from the Main method. The StaticMethod displays a message and prints the value of StaticField.

As we can see, the static constructor is executed only once before using any static members of the class, ensuring that the static field is properly initialized.

How Scaler Transformed Careers in Different Fields

₹23L
AVG CTC
SCALER PLACEMENT PROOF

Scaler learners achieved 2.5x salary growth with average post-Scaler CTC reaching ₹23L.

11,000+placements
650+companies
Verified data
Hiring Partners:
GoogleGoogleAmazonAmazonMicrosoftMicrosoftFlipkartFlipkartAdobeAdobe1200+ more

Use of Static Constructors in C#

Static constructors in C# are used to perform one-time initialization tasks for a class's static members. They ensure that static fields are correctly initialized before they are accessed or used in the program.

Here are some common use cases of static constructors in C#:

  • Initializing Static Fields: Static constructors are often used to set initial values for static fields. This is particularly useful when the initialization requires complex computations, database connections, or loading data from external sources.
  • Creating Singletons: Static constructors can be employed to implement singleton patterns. A singleton class ensures that only one instance of the class is created, and the static constructor is responsible for initializing that single instance.
  • Registering Types or Services: In some scenarios, you might want to register types or services in a central container or service locator. The static constructor can handle such registration tasks to ensure they are done only once.
  • Configuring Static Resources: If your class relies on static resources, such as files, configurations, or external libraries, the static constructor can be used to configure and prepare those resources before they are used.
  • Managing Shared Resources: When multiple instances of a class need to share the same resources, the static constructor can be employed to create and manage those shared resources.
  • Performance Optimization: By precomputing or preloading resources in the static constructor, you can optimize the performance of your application and reduce delays when the resources are needed later.
  • Exception Handling: Static constructors can be used to handle exceptions during initialization. If an exception occurs in the static constructor, it will be caught and the type will be marked as unusable, preventing further access to static members.

Note: It's essential to use static constructors with caution, as their execution is not under direct control and can affect the behavior of your program. Ensure that the initialization logic in the static constructor is idempotent and does not have side effects that may cause unexpected behavior. Additionally, avoid performing time-consuming or resource-intensive tasks in static constructors, as they may negatively impact application startup time.

Conclusion

  • Static constructors in C# are special constructors associated with a class, not instances, and are automatically called before accessing any static members or methods of the class.
  • They are defined using the static keyword and cannot be called directly in code; they are executed only once during the program's lifetime.
  • Static constructors are used for one-time initialization tasks, such as setting initial values for static fields or performing complex setup operations.
  • They play a crucial role in ensuring that static members are correctly initialized before they are used, providing a reliable mechanism for managing static state within a C# class.
  • Care should be taken while using static constructors to avoid side effects and performance issues, making them useful for handling singleton patterns, resource management, and exception handling during initialization.