# 静态类 概念: - 用 `static` 修饰的类叫静态类 - ==只能包含静态成员== - ==不能被实例化== 通常用法: - 写工具类 - 存放通用辅助方法 语法: ```csharp public static class MathTool { public static int Add(int a, int b) { return a + b; } } ``` 注意: 1. 静态类不能 `new` 2. 静态类不能包含实例成员 3. 静态类本质上也不能被继承,常可以理解为“天然密封” ---- # 静态构造函数 概念: - 静态构造函数用于初始化静态数据 - 会在==第一次使用该类型前==自动执行 通常用法: - 初始化复杂的静态字段 - 做一次性的类型级初始化 语法: ```csharp class Test { static Test() { Console.WriteLine("静态构造函数"); } } ``` 案例: ```csharp class Test { public static int Count; static Test() { Count = 100; Console.WriteLine("执行静态构造函数"); } public Test() { Console.WriteLine("执行普通构造函数"); } } Console.WriteLine(Test.Count); var t = new Test(); ``` 执行理解: - 第一次访问 `Test.Count` 时,会先执行静态构造函数 - 之后再创建对象时,不会重复执行静态构造函数 注意: 1. ==类和结构体都可以有静态构造函数== 2. ==静态构造函数不能写访问修饰符== 3. ==静态构造函数不能有参数== 4. 一个类型最多只有一个静态构造函数 5. 静态构造函数只会自动执行一次 6. 如果只是简单赋值,优先考虑直接写静态字段初始化器,通常更直观