当前位置: 首页 > article >正文

C# 中的静态构造函数和实例构造函数的区别

在C#中,静态构造函数和实例构造函数在类的初始化过程中扮演着不同的角色。下面我将详细介绍这两种构造函数的区别:

  1. 实例构造函数(Instance Constructor):

    • 实例构造函数用于初始化类的实例(对象)。当创建类的一个新实例时,实例构造函数会被调用。
    • 每个类至少有一个实例构造函数。如果没有显式定义,C#编译器会自动提供一个默认的无参构造函数。
    • 实例构造函数可以是公共的、私有的、受保护的、内部的或受保护内部的,这取决于你希望如何控制对象的创建。
    • 它可以有参数,用于初始化类的实例变量。

    示例

    public class MyClass
    {
        public string Name { get; set; }
    
        public MyClass(string name)
        {
            Name = name;
        }
    }
    
  2. 静态构造函数(Static Constructor):

    • 静态构造函数用于初始化类的静态成员。它在类的任何实例被创建之前执行,且在整个应用程序域中仅执行一次。
    • 静态构造函数没有访问修饰符,没有参数,不能被标记为 public、protected、private 等,也不能被重载。
    • 它主要用于初始化静态字段,如数据库连接字符串、日志配置等。
    • 如果类包含静态成员,且这些成员需要初始化逻辑,那么静态构造函数是理想的选择。

    示例

    public class MyClass
    {
        public static string ConnectionString { get; private set; }
    
        static MyClass()
        {
            ConnectionString = "Data Source=server;Initial Catalog=database;User ID=user;Password=password";
        }
    }
    

总结:

  • 实例构造函数用于初始化类的实例,而静态构造函数用于初始化类的静态成员。
  • 静态构造函数在类的任何实例创建之前执行,而实例构造函数在创建类的每个实例时执行。
  • 静态构造函数没有访问修饰符,不能有参数,而实例构造函数可以有访问修饰符和参数。

http://www.kler.cn/a/429792.html

相关文章:

  • Vue.js 使用插槽(Slots)优化组件结构
  • 数据分析思维(十一):应用篇——用数据分析解决问题
  • Java高频面试之SE-11
  • Python对象的序列化和反序列化工具:Joblib与Pickle
  • 基类指针指向派生类对象,基类指针的首地址永远指向子类从基类继承的基类首地址
  • Matplotlib 直方图:数据可视化基础
  • docker 部署seata
  • 思科模拟器路由器的基本配置
  • 数据挖掘:一、Weka软件的基本操作
  • ubuntu如何安装cuda 11.8版本
  • 21天掌握javaweb-->第12天:Spring Boot项目优化与安全性
  • YOLOv10改进,YOLOv10添加CARAFE轻量级通用上采样算子,可提高目标检测性能
  • 创建 React Native 项目
  • 满足地图“颜控”,打造百变风格地图
  • 自动驾驶数据集的应用与思考
  • Grafana功能菜单介绍
  • VS中报错,无法嵌入互操作类型XXX,请改用适用的接口的解决方法
  • Go语言基础教程1
  • C# 中的异步编程:提升应用程序响应性和性能
  • Redis原理—2.单机数据库的实现
  • uviewplus中的时间单选框up-datetime-picker的在uni-app+vue3的使用方法
  • 新手前端开发入职公司全流程
  • 使用wpa_cli调用接口报错failed opendir
  • 洛谷 B3854 [语言月赛 202309] 数组与内存 EV C语言
  • 将setkey工具从freeBSD移植到rtems-libbsd
  • SRS 服务器入门:实时流媒体传输的理想选择