英文网站 模板长春市经济开发区人才网

张小明 2026/1/1 6:27:48
英文网站 模板,长春市经济开发区人才网,使用dw设计个人简历网页模板,千锋教育培训坑人不浅静态构造函数是 C# 中用于初始化类的静态成员的特殊构造函数#xff0c;它在类的生命周期中扮演着独一无二的角色。本文将从核心特性、执行顺序、代码实战三个维度#xff0c;全面解析静态构造函数#xff0c;并补充静态与非静态成员的核心区别#xff0c;帮助开发者彻底掌…静态构造函数是 C# 中用于初始化类的静态成员的特殊构造函数它在类的生命周期中扮演着独一无二的角色。本文将从核心特性、执行顺序、代码实战三个维度全面解析静态构造函数并补充静态与非静态成员的核心区别帮助开发者彻底掌握这一关键语法。一、静态构造函数的核心特点静态构造函数是专门用于初始化类的静态成员的特殊方法其核心特性可总结为以下几点1.语法限制必须以static修饰且不允许添加任何访问修饰符public/private等只能是无参构造函数一个类中最多只能有一个静态构造函数无法手动调用由 CLR公共语言运行时自动触发执行。2.执行时机静态构造函数会在以下两种场景中首次触发类初始化时执行且整个程序生命周期内仅执行一次创建该类的第一个实例时访问该类的任意静态成员静态变量、静态方法、静态属性时。3.核心作用用于初始化类的静态成员如给静态变量赋值、初始化静态资源而非实例成员。二、静态构造函数的执行顺序类的初始化遵循 “先静态、后实例先基类、后派生类” 的核心规则完整执行顺序如下派生类的静态变量初始化派生类的静态构造函数执行基类的静态变量初始化基类的静态构造函数执行基类的实例变量初始化基类的实例构造函数执行派生类的实例变量初始化派生类的实例构造函数执行。using System; // 基类 class BaseClass { // 基类静态变量步骤3 public static int BaseStaticVar InitBaseStaticVar(); // 基类实例变量仅声明初始化移至构造函数 public int BaseInstanceVar; // 基类静态构造函数步骤4 static BaseClass() { Console.WriteLine(✅ 基类静态构造函数执行); } // 基类实例构造函数步骤6 public BaseClass() { // 初始化基类实例变量步骤5 BaseInstanceVar InitBaseInstanceVar(); Console.WriteLine(✅ 基类实例构造函数执行); } // 辅助方法初始化基类静态变量 private static int InitBaseStaticVar() { Console.WriteLine(✅ 基类静态变量初始化); return 10; } // 辅助方法初始化基类实例变量 private int InitBaseInstanceVar() { Console.WriteLine(✅ 基类实例变量初始化); return 20; } } // 派生类 class DerivedClass : BaseClass { // 派生类静态变量步骤1 public static int DerivedStaticVar InitDerivedStaticVar(); // 派生类实例变量仅声明初始化移至构造函数 public int DerivedInstanceVar; // 派生类静态构造函数步骤2 static DerivedClass() { Console.WriteLine(✅ 派生类静态构造函数执行); } // 派生类实例构造函数步骤8 public DerivedClass() { // 初始化派生类实例变量步骤7 DerivedInstanceVar InitDerivedInstanceVar(); Console.WriteLine(✅ 派生类实例构造函数执行); } // 辅助方法初始化派生类静态变量 private static int InitDerivedStaticVar() { Console.WriteLine(✅ 派生类静态变量初始化); return 30; } // 辅助方法初始化派生类实例变量 private int InitDerivedInstanceVar() { Console.WriteLine(✅ 派生类实例变量初始化); return 40; } } class Program { static void Main() { Console.WriteLine( 开始创建派生类实例 ); DerivedClass derived new DerivedClass(); // 输出变量值验证初始化结果 Console.WriteLine(\n 变量初始化结果 ); Console.WriteLine($基类静态变量{BaseClass.BaseStaticVar}); Console.WriteLine($派生类静态变量{DerivedClass.DerivedStaticVar}); Console.WriteLine($基类实例变量{derived.BaseInstanceVar}); Console.WriteLine($派生类实例变量{derived.DerivedInstanceVar}); } }运行结果关键符合 C# 初始化顺序 开始创建派生类实例 ✅ 派生类静态变量初始化 ✅ 派生类静态构造函数执行 ✅ 基类静态变量初始化 ✅ 基类静态构造函数执行 ✅ 基类实例变量初始化 ✅ 基类实例构造函数执行 ✅ 派生类实例变量初始化 ✅ 派生类实例构造函数执行 变量初始化结果 基类静态变量10 派生类静态变量30 基类实例变量20 派生类实例变量40三、静态与非静态成员的核心区别理解静态构造函数需先明确静态成员与非静态成员的本质差异特性静态成员static 修饰非静态成员无 static 修饰归属属于 “类本身”所有实例共享属于 “类的实例”每个实例独立拥有访问方式类名。静态成员如Cat.Name实例名。非静态成员如cat.Name初始化时机类加载时静态构造函数执行前实例创建时实例构造函数执行前生命周期程序启动至结束实例创建至被 GC 回收扩展示例静态变量的简单应用以Cat类为例展示静态变量的声明与使用using System; class Cat { // 静态变量所有猫共享的“品种” public static string Species 哺乳纲猫科; // 非静态变量每个猫的独立“名字” public string Name; // 静态构造函数初始化静态变量 static Cat() { Console.WriteLine($✅ 静态构造函数初始化所有猫的品种为「{Species}」); } // 实例构造函数初始化实例变量 public Cat(string name) { Name name; Console.WriteLine($✅ 实例构造函数猫的名字是「{Name}」); } } class Test { static void Main() { // 访问静态变量触发静态构造函数执行 Console.WriteLine($猫的品种{Cat.Species}); // 创建第一个实例 Cat cat1 new Cat(小白); // 创建第二个实例 Cat cat2 new Cat(小黑); // 验证静态变量共享性 Cat.Species 家养宠物猫; Console.WriteLine($修改后品种{Cat.Species}); // 修正用类名访问静态成员而非实例 Console.WriteLine($cat1的品种{Cat.Species}); } }✅ 静态构造函数初始化所有猫的品种为「哺乳纲猫科」 猫的品种哺乳纲猫科 ✅ 实例构造函数猫的名字是「小白」 ✅ 实例构造函数猫的名字是「小黑」 修改后品种家养宠物猫 cat1的品种家养宠物猫四、静态构造函数的常见注意事项异常处理若静态构造函数抛出未处理的异常该类将永久无法初始化后续尝试创建实例或访问静态成员时会抛出TypeInitializationException执行顺序不可控CLR 仅保证 “首次使用前执行”但无法精确控制执行时机如程序启动时、实例创建时与私有构造函数的区别私有构造函数用于阻止类被实例化而静态构造函数用于初始化静态成员二者可共存静态只读变量静态构造函数是初始化 “静态只读变量” 的常用方式尤其是需要复杂逻辑赋值时如public static readonly string ConfigPath; static ConfigClass() { // 从配置文件读取路径复杂逻辑 ConfigPath ReadConfigPath(); }总结静态构造函数是 C# 中初始化类静态成员的核心工具其核心特性可概括为 “无参、无访问修饰符、自动执行、仅执行一次”执行顺序遵循 “先静态后实例、先基类后派生类” 的规则理解静态与非静态成员的区别是正确使用静态构造函数的前提。在实际开发中静态构造函数常用于初始化全局共享的静态资源、配置项等场景合理使用可提升代码的规范性和可维护性。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

公司网站开发项目外包方案wap 在线

还在为音乐会员续费而烦恼吗?洛雪音乐音源项目为你打开了一扇通往免费音乐世界的大门!这个开源项目汇集了全网最新最全的音源资源,让你轻松享受高品质音乐播放体验。无论你是Windows、macOS还是Linux用户,都能完美适配&#xff0c…

张小明 2025/12/28 19:09:16 网站建设

21天网站建设实录pdf做的网站百度排名没有图片显示

在这个数字技术蓬勃发展的时代,你是否曾为昂贵的测试设备而烦恼?现在,一个革命性的开源项目Sigrok-Pico正改变着电子爱好者和专业工程师的工作方式。这个项目巧妙地将仅需40元的树莓派PICO转化为功能强大的逻辑分析仪和示波器,让专…

张小明 2025/12/28 14:09:40 网站建设

长沙公司做网站的价格wordpress怎么在导航栏里加图标

Ubuntu实用技巧大揭秘 在使用Ubuntu系统的过程中,我们常常会遇到一些需求,比如获取特定字体、使用特殊字符、进行邮件加密等。下面就为大家详细介绍一些实用的技巧。 1. 连接调制解调器 如果你的调制解调器通过USB连接(较贵的型号有专用调制解调器硬件,而非依赖软件驱动…

张小明 2025/12/28 20:07:32 网站建设

网站建设方案数网页设计资料下载网站

多处理器架构与集群系统设计 1. 流水线处理器与重叠效应 流水线处理器可以通过在从内存获取变量 A 的值的同时,从指令中获取变量 B 的地址来实现重叠。流水线计算机将指令填充到其管道中,并立即开始处理所有指令,以最大化重叠效果。它们常用于超级计算机,因为在超级计算机…

张小明 2025/12/28 22:36:45 网站建设

南昌做网站软件网站是干嘛用的

高效UML绘图工具:PlantUML在线编辑器完整指南 【免费下载链接】plantuml-editor PlantUML online demo client 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml-editor 痛点揭示:传统UML绘图的困扰 在软件开发过程中,UML图表是…

张小明 2025/12/29 5:00:56 网站建设

房屋租赁网站开发背景wordpress 后台404

行业痛点:当新旧协议“语言不通”作为一名自动化工程师,您是否遇到过这样的窘境:现场的高端伺服驱动器自带Profinet绝对值编码器,但控制系统(如老式PLC)却只认DeviceNet总线?或者,在…

张小明 2025/12/31 10:25:03 网站建设