CS3L9——静态类和静态构造函数

静态类

  1. 概念:用 static​ 修饰的类
  2. 特点:只能包含静态成员,不能实例化
  3. 作用:将常用的静态成员写在静态类中,方便使用,
    静态类不能被实例化 更能体现工具类的唯一性,比如 Console​ 就是一个静态类

静态类适合用来做工具类

1
2
3
4
5
6
7
8
9
static class Tools
{
//静态成员变量
public static int testIndex = 0;
//静态成员函数
public static void TestFun() { }

public static int TestIndex { get; set; }
}

静态构造函数

  • 概念:用 static​ 修饰的构造函数

  • 特点

    静态类和普通类都可以有静态构造函数,它不能用访问修饰符,不能有参数,只会自动调用一次
    静态构造函数在第一次调用类的内容时就会自动调用执行

  • 作用:在静态构造函数中初始化静态变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//在静态类中的静态构造函数
static class StaticClass
{
public static int testInt = 100;
public static int testInt2 = 100;

static StaticClass()
{
WriteLine("静态构造函数");
testInt = 200;
testInt2 = 300;
}
}

//在普通类中的静态构造函数
class Test
{
public static int testInt = 200;

static Test()
{
WriteLine("静态构造");
}

//注意上下两者的Test()是不构成重载的!!!
public Test()
{
WriteLine("一般构造");
}
}

internal class Program
{
static void Main(string[] args)
{
WriteLine(StaticClass.testInt); //第一次调用静态类
WriteLine(StaticClass.testInt2);
WriteLine(StaticClass.testInt);

WriteLine(Test.testInt); //第一次调用类
Test t = new Test();
Test t2 = new Test();

}
}

输出:

1
2
3
4
5
6
7
8
静态构造函数    //可见,静态构造函数会在 第一次调用静态类的成员 之前就会自动调用执行
200
300
200
静态构造 //可见,静态构造函数会在 第一次实例化类 或者 第一次调用类中的成员 之前就会自动调用执行
200
一般构造
一般构造