程序开发 > C# > 正文

静态构造函数不允许出现访问修饰符举例(static function)

亮术网 2020-08-15 本网原创

在 C# 中,函数(方法)有三种访问修饰符,分别为:public、protected 和 private;一般来说,函数前面都需要用修饰符以确定函数允许访问的范围,而静态构造函数却恰恰相反,在它的前面不允许出现任何访问修饰符,否则编译时会报错。

构造函数是一个类中用来初始化成员的方法,当类被第一次执行时首先执行构造函数并且仅执行一次,也就是完成初始化成员的任务后就不再执行了。有时,一些变量经常会用到,因此需要定义为静态成员使之常驻内存以提高执行速度,而静态成员的初始化必须在静态构造函数中,所以有静态成员的类需要定义静态构造函数。以下是分别在静态构造函数的前面加访问修饰符与不加的情况。

 

一、在静态构造函数前加访问修饰符

定义一个 StaticTest 类,然后再定义几个静态成员,再在静态构造函数中初始化这些静态成员,代码如下:

public class StaticTest
  {
    public static string configFile;
    public static string imgPath;

  public static StaticTest()
    {
      configFile = "值来自数据库";
      imgPath = "值来自数据库";
    }
  }

编译时立即抛出异常,提示:静态构造函数中不允许出现访问修饰符,这个提示有双重的含义,十分容易混淆,是指静态成员变量还是指静态构造函数本身。

 

二、在静态构造函数前不加访问修饰符

把上面的类 class 前的访问修饰符去掉,代码变为:

class StaticTest
  {
    public static string configFile;
    public static string imgPath;

  public static StaticTest()
    {
      configFile = "值来自数据库";
      imgPath = "值来自数据库";
    }
  }

再编译的时候,不会报“静态构造函数中不允许出现访问修饰符”的错误,说明是静态构造函数前不允许出现访问修饰符,而不是静态成员变量。