C# 类加载和初始化详解:A 和 B 类的实例分析
这段代码定义了两个类 A 和 B,用于演示 C# 中类的加载和初始化过程。以下是对代码的逐行解释:
public class A:定义了一个公共类 A。public A(string str):A 类的构造函数,参数为一个字符串。当创建 A 类的对象时,会输出传入的字符串。public class B:定义了一个公共类 B。static A a1 = new A('a1');:在类 B 中定义了一个静态成员变量 a1,并将其初始化为创建 A 对象的实例,传入的参数为 'a1'。由于该变量是静态的,它会在类 B 加载时被初始化,而不是在创建类 B 的对象时。A a2 = new A('a2');:在类 B 中定义了一个非静态成员变量 a2,并将其初始化为创建 A 对象的实例,传入的参数为 'a2'。由于该变量是非静态的,它会在创建类 B 的对象时被初始化。static B():B 类的静态构造函数。在类 B 加载时,会执行这个静态构造函数。在这个函数中,将 a1 重新赋值为创建 A 对象的实例,传入的参数为 'a3'。public B():B 类的构造函数。当创建 B 类的对象时,会执行这个构造函数。在这个函数中,将 a2 重新赋值为创建 A 对象的实例,传入的参数为 'a4'。
总结:
这段代码演示了以下 C# 类的关键概念:
- 类加载: 当程序第一次使用类 B 时,会加载类 B,并执行静态构造函数。
- 静态成员: 静态成员变量在类加载时被初始化,所有类 B 的实例共享同一个静态成员变量 a1。
- 非静态成员: 非静态成员变量在创建对象时被初始化,每个类 B 的实例都有自己的非静态成员变量 a2。
- 静态构造函数: 在类加载时只执行一次。
- 构造函数: 在创建对象时执行,用于初始化对象成员。
通过这个示例,我们可以更清晰地理解 C# 中类的加载和初始化过程,以及静态成员和非静态成员的区别。
原文地址: https://www.cveoy.top/t/topic/plAP 著作权归作者所有。请勿转载和采集!