Table of Contents
Example
Output
Home Backend Development C#.Net Tutorial What is the use of static constructor in C#?

What is the use of static constructor in C#?

Aug 23, 2023 pm 10:25 PM

What is the use of static constructor in C#?

Static constructor is used to initialize any static data, or perform specific operations The content that needs to be translated is: Operations that are automatically performed before the first call When an instance is created or any static member is referenced.

Static constructors are useful when creating wrapper classes for unmanaged code. When the constructor can call the LoadLibrary method. The same goes for static constructors Convenient place to enforce type parameters that cannot be checked at runtime The constraints are checked at compile time.

The static constructor has the following properties −

  • The static constructor does not accept access modifiers or parameters.

  • A class or structure can only have one static constructor.

  • Static constructors cannot be inherited or overloaded.

  • The static constructor cannot be called directly, but can only be called through other methods

Common Language Runtime (CLR). It will be called automatically.
  • The user has no control over when the static constructor is executed program.

  • The static constructor is automatically called before initializing the class The first instance is created or references any static members. a static The constructor will run before the instance constructor. static constructor of type Called when a static method is assigned to an event or delegate and is called And not when assigned. If a static field variable initializer exists in class of the static constructor, they will be executed in the textual order in A class with static constructors that will be executed in text order They appear in the class declaration before execution If you do not provide a static constructor to initialize static fields, all static fields will be automatically initialized on first access in the order in which they were declared.

  • Fields are initialized to their values ​​listed in Default Values ​​in C# If a static constructor throws an exception, it will not be called by the runtime the second time, and the type will remain uninitialized for its lifetime The application domain in which your program runs. Most commonly, a TypeInitializationException occurs when a static constructor is thrown Unable to instantiate type or when an unhandled exception occurs Static constructor. For implicit static constructors not explicitly defined Defined in source code, troubleshooting may require checking Intermediate language (IL) code.
  • The existence of a static constructor will prevent addition BeforeFieldInit type property. This limits runtime optimization.

  • A field declared as static readonly can only be assigned as part of it in a declaration or static constructor. When there is no explicit static constructor The content that needs to be translated is: required, initialize static fields at declaration, rather than through a static The content that needs to be translated is: required, initialize static fields at declaration, rather than through a static Constructors are used for better runtime optimization.

  • Example

    Real-time demonstration

    using System;
    namespace DemoApplication{
       public class Program{
          static void Main(string[] args){
             Car user = new Car();
             Car user1 = new Car();
             Console.ReadLine();
          }
       }
       public class Car{
          static Car(){
             Console.WriteLine("Static constructor called");
          }
          public Car(){
             Console.WriteLine("Default constructor called");
          }
       }
    }
    Copy after login

    Output

    Static constructor called
    Default constructor called
    Default constructor called
    Copy after login

    In the above example, we can see that the static constructor only is called once.

    Example

    Online demonstration

    using System;
    using System.Threading;
    namespace DemoApplication{
       public class Car{
          protected static readonly DateTime globalStartTime;
          protected int RouteNumber { get; set; }
          static Car(){
             globalStartTime = DateTime.Now;
             Console.WriteLine($"Static constructor called. Global start time:
             {globalStartTime.ToLongTimeString()}");
          }
          public Car(int routeNum){
             RouteNumber = routeNum;
             Console.WriteLine($"Car {RouteNumber} is created.");
          }
          public void Drive(){
             TimeSpan elapsedTime = DateTime.Now - globalStartTime;
             Console.WriteLine($"Car {this.RouteNumber} is starting its route
             {elapsedTime.Milliseconds} minutes after global start time
             {globalStartTime.ToShortTimeString()}.");
          }
       }
       class TestCar{
          static void Main(){
             Car car1 = new Car(1);
             Car car2 = new Car(2);
             car1.Drive();
             Thread.Sleep(25);
             car2.Drive();
             Console.ReadLine();
          }
       }
    }
    Copy after login

    Output

    Static constructor called. Global start time:
    7:09:06 AM
    Car 1 is created.
    Car 2 is created.
    Car 1 is starting its route25 minutes after global start time7:09 AM.
    Car 2 is starting its route50 minutes after global start time7:09 AM.
    Copy after login

    The above is the detailed content of What is the use of static constructor in C#?. For more information, please follow other related articles on the PHP Chinese website!

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    AI Hentai Generator

    AI Hentai Generator

    Generate AI Hentai for free.

    Hot Article

    R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. Best Graphic Settings
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O. How to Fix Audio if You Can't Hear Anyone
    3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    How to use char array in C language How to use char array in C language Apr 03, 2025 pm 03:24 PM

    The char array stores character sequences in C language and is declared as char array_name[size]. The access element is passed through the subscript operator, and the element ends with the null terminator '\0', which represents the end point of the string. The C language provides a variety of string manipulation functions, such as strlen(), strcpy(), strcat() and strcmp().

    What is the role of char in C strings What is the role of char in C strings Apr 03, 2025 pm 03:15 PM

    In C, the char type is used in strings: 1. Store a single character; 2. Use an array to represent a string and end with a null terminator; 3. Operate through a string operation function; 4. Read or output a string from the keyboard.

    How to handle special characters in C language How to handle special characters in C language Apr 03, 2025 pm 03:18 PM

    In C language, special characters are processed through escape sequences, such as: \n represents line breaks. \t means tab character. Use escape sequences or character constants to represent special characters, such as char c = '\n'. Note that the backslash needs to be escaped twice. Different platforms and compilers may have different escape sequences, please consult the documentation.

    How to use various symbols in C language How to use various symbols in C language Apr 03, 2025 pm 04:48 PM

    The usage methods of symbols in C language cover arithmetic, assignment, conditions, logic, bit operators, etc. Arithmetic operators are used for basic mathematical operations, assignment operators are used for assignment and addition, subtraction, multiplication and division assignment, condition operators are used for different operations according to conditions, logical operators are used for logical operations, bit operators are used for bit-level operations, and special constants are used to represent null pointers, end-of-file markers, and non-numeric values.

    The difference between multithreading and asynchronous c# The difference between multithreading and asynchronous c# Apr 03, 2025 pm 02:57 PM

    The difference between multithreading and asynchronous is that multithreading executes multiple threads at the same time, while asynchronously performs operations without blocking the current thread. Multithreading is used for compute-intensive tasks, while asynchronously is used for user interaction. The advantage of multi-threading is to improve computing performance, while the advantage of asynchronous is to not block UI threads. Choosing multithreading or asynchronous depends on the nature of the task: Computation-intensive tasks use multithreading, tasks that interact with external resources and need to keep UI responsiveness use asynchronous.

    How to convert char in C language How to convert char in C language Apr 03, 2025 pm 03:21 PM

    In C language, char type conversion can be directly converted to another type by: casting: using casting characters. Automatic type conversion: When one type of data can accommodate another type of value, the compiler automatically converts it.

    What is the function of C language sum? What is the function of C language sum? Apr 03, 2025 pm 02:21 PM

    There is no built-in sum function in C language, so it needs to be written by yourself. Sum can be achieved by traversing the array and accumulating elements: Loop version: Sum is calculated using for loop and array length. Pointer version: Use pointers to point to array elements, and efficient summing is achieved through self-increment pointers. Dynamically allocate array version: Dynamically allocate arrays and manage memory yourself, ensuring that allocated memory is freed to prevent memory leaks.

    Avoid errors caused by default in C switch statements Avoid errors caused by default in C switch statements Apr 03, 2025 pm 03:45 PM

    A strategy to avoid errors caused by default in C switch statements: use enums instead of constants, limiting the value of the case statement to a valid member of the enum. Use fallthrough in the last case statement to let the program continue to execute the following code. For switch statements without fallthrough, always add a default statement for error handling or provide default behavior.

    See all articles