C# 静态构造函数

Posted cyang812

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 静态构造函数相关的知识,希望对你有一定的参考价值。

一、基础概念

1、静态构造函数和实例构造函数相似的地方

  • 静态构造函数的名称必须和类名相同
  • 构造函数不能有返回值。

2、静态构造函数和实例构造函数不同的地方

  • 静态构造函数声明中使用 static 关键字
  • 类只能有一个静态构造函数,而且不能带参数
  • 静态构造函数不能有访问修饰符

类既可以有静态构造函数也可以有实例构造函数。

3、如何使用

静态构造函数不能从程序中显示调用,系统会在如下两种场景自动调用它们:

  • 在类的任何实例被创建之前;
  • 在类的任何静态成员被引用之前。

case 1: 在类的任何实例被创建之前

namespace ConsoleSample

    class RandomNumberClass 
    
        private static Random RandomKey;

        static RandomNumberClass()
        
            RandomKey = new Random();
        

        public int GetRandonNumber() 
        
            return RandomKey.Next();
        
    

    class Program
    
        
        static void Main(string[] args)
                   
            RandomNumberClass a = new RandomNumberClass();
            for (int i = 0; i < 10; i++)
            
                Console.WriteLine(a.GetRandonNumber());
                                   
        
    

case 2: 在类的任何静态成员被引用之前

namespace ConsoleSample

    class RandomNumberClass 
    
        public static Random RandomKey;

        static RandomNumberClass()
        
            RandomKey = new Random();
        
    

    class Program
    
        
        static void Main(string[] args)
                         
            for (int i = 0; i < 10; i++)
            
                Console.WriteLine(RandomNumberClass.RandomKey.Next());
            
        
    

以上是关于C# 静态构造函数的主要内容,如果未能解决你的问题,请参考以下文章

C#静态构造函数

C#静态构造函数排序[关闭]

请教一下C#中父类静态构造函数在子类中为啥不会和子类的静态构造函数一起执行

C#基础 可选参数调用params无参静态构造函数

C#静态类,构造函数带参数

C#中静态字段声明时赋值与构造函数中赋值