静态构造函数

写在前面的话

对于构造函数,我们都很熟悉,用于在实例化类的时候,使用new关键字,new出一个实例来供使用。

那么对于静态构造函数,充当的是什么角色呢,它和非静态构造函数有什么区别呢?它又有什么好处呢?

描述

静态构造函数用于初始化任何静态数据(静态方法里只能引用静态字段,静态构造函数也属于静态方法的一种)。

静态构造方法在创建第一个实例或引用类的静态变量之前,会自动调用静态构造函数。

特点:

1.静态构造函数没有修饰符,也没有参数

2.静态构造方法无法继承,且无法手动调用

3.无参数的静态构造函数可以和无参数的非静态函数共存(尽管方法前面相同,但是一个属于类,一个属于实例)

4.如果类中含有带初始值的静态成员,那么编译器会生成默认的静态构造函数

典型应用:

当类使用日志文件时,可以使用这种构造函数,向其中写入日志。

示例:

    public class Person
    {
        static string name = "张三";

        static Person()
        {
            /*
             * 如果注释下面的话
               * 则GetName方法返回 张三
               * 否则返回 李四
               */   
             name = "李四";
        }

        public string GetName()
        {
            return Person.name;
        }
    }

我们来新建一个Student类,让它继承自Person类,看看GetName方法会出现得到什么呢?

    public class Student : Person
    {
        
    }
此时,GetName方法获取的值仍然是 李四。此代码等同于:
    public class Student : Person
    {
        public Student()
            : base()
        {

        }
    }
注意:
如果有子类继承自带静态构造方法的类时,子类必须有空构造函数,否则会报错。
原文地址:https://www.cnblogs.com/loveYN/p/4509719.html