home commit with new plugins
This commit is contained in:
+60
-50
@@ -1,70 +1,80 @@
|
||||
# 静态类
|
||||
概念:
|
||||
用static修饰
|
||||
==只能包含静态成员==
|
||||
==不能被实例化==
|
||||
- 用 `static` 修饰的类叫静态类
|
||||
- ==只能包含静态成员==
|
||||
- ==不能被实例化==
|
||||
|
||||
通常用法:
|
||||
作为==工具类==方便使用
|
||||
- 写工具类
|
||||
- 存放通用辅助方法
|
||||
|
||||
语法:
|
||||
访问修饰符 static 类名(){}
|
||||
|
||||
案例:
|
||||
```Csharp
|
||||
public static class fun()
|
||||
{
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
注意:
|
||||
静态类不能被实例化,所以不能new!
|
||||
|
||||
# 静态构造函数
|
||||
概念:
|
||||
staitc修饰
|
||||
|
||||
通常用法:
|
||||
在静态函数中初始化静态变量
|
||||
|
||||
语法:
|
||||
|
||||
|
||||
案例:
|
||||
```Csharp
|
||||
static class StaticClass
|
||||
```csharp
|
||||
public static class MathTool
|
||||
{
|
||||
public static int testInt = 100;
|
||||
public static int testInt2 = 100;
|
||||
|
||||
static StaticClass()
|
||||
public static int Add(int a, int b)
|
||||
{
|
||||
Console.WriteLine("静态构造函数");
|
||||
return a + b;
|
||||
}
|
||||
}
|
||||
```
|
||||
↑运行后,在第一次使用该类会直接打印
|
||||
```Csharp
|
||||
|
||||
注意:
|
||||
1. 静态类不能 `new`
|
||||
2. 静态类不能包含实例成员
|
||||
3. 静态类本质上也不能被继承,常可以理解为“天然密封”
|
||||
|
||||
----
|
||||
# 静态构造函数
|
||||
概念:
|
||||
- 静态构造函数用于初始化静态数据
|
||||
- 会在==第一次使用该类型前==自动执行
|
||||
|
||||
通常用法:
|
||||
- 初始化复杂的静态字段
|
||||
- 做一次性的类型级初始化
|
||||
|
||||
语法:
|
||||
```csharp
|
||||
class Test
|
||||
{
|
||||
public static int testInt = 200;
|
||||
|
||||
static Test()
|
||||
{
|
||||
Console.WriteLine("静态构造函数");
|
||||
}
|
||||
|
||||
|
||||
public 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. 只会==自动调用一次==
|
||||
1. ==类和结构体都可以有静态构造函数==
|
||||
2. ==静态构造函数不能写访问修饰符==
|
||||
3. ==静态构造函数不能有参数==
|
||||
4. 一个类型最多只有一个静态构造函数
|
||||
5. 静态构造函数只会自动执行一次
|
||||
6. 如果只是简单赋值,优先考虑直接写静态字段初始化器,通常更直观
|
||||
|
||||
Reference in New Issue
Block a user