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

windows C#-静态构造函数

静态构造函数用于初始化任何静态数据,或执行仅需执行一次的特定操作。 它会在创建第一个实例或引用任何静态成员之前自动调用。 静态构造函数最多调用一次。

class SimpleClass
{
    // Static variable that must be initialized at run time.
    static readonly long baseline;

    // Static constructor is called at most one time, before any
    // instance constructor is invoked or member is accessed.
    static SimpleClass()
    {
        baseline = DateTime.Now.Ticks;
    }
}

有多个操作在静态初始化时执行。 这些操作按以下顺序执行:

  • 静态字段设置为 0。 通常由运行时执行此初始化。
  • 静态字段初始值设定项运行。 派生程度最高类型的静态字段初始值设定项运行。
  • 基类型静态字段初始值设定项运行。 以直接基开头从每个基类型到 System.Object 的静态字段初始值设定项。
  • 所有静态构造函数运行。 任何静态构造函数都会运行,从 Object.Object 的最终基类到每一个基类,再到类型。 静态构造函数执行的顺序没有指定。 但是,在创建任何实例之前,层次结构中的所有静态构造函数都会运行。

 静态构造函数在创建任何实例之前运行的规则有一个重要例外。 如果静态字段初始值设定项创建了该类型的实例,那么该初始值设定项(包括对实例构造函数的任何调用)将在静态构造函数运行之前运行。 这在单一实例模式中最为常见,如以下示例所示:

public class Singleton
{
    // Static field initializer calls instance constructor.
    private static Singleton instance = new Singleton();

    private Singleton()
    { 
        Console.WriteLine("Executes before static constructor.");
    }

    static Singleton()
    { 
        Console.WriteLine("Executes after instance constructor.");
    }

    public static Singleton Instance => instance;
}

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

相关文章:

  • JVM简介—1.Java内存区域
  • ARP..
  • gpu硬件架构
  • 使用 datamodel-code-generator 从 MySQL 生成 Python 模型
  • 使用xjar 对Spring-Boot JAR 包加密运行
  • html 中 表格和表单的关系与区别
  • 计算机网络之多路转接epoll
  • bestphp‘s revenge
  • linux内核网络分层概述
  • Vue中<script setup></script>的主要语法元素和特性
  • redis开发与运维-redis02-redis数据类型与命令总结
  • 使用C++调用YOLOv8模型的一般步骤
  • 首次成功尝试!使用多模态无监督聚类的语义发现
  • MySQL -- 库的相关操作
  • 性能】JDK和Jmeter的安装与配置
  • 12爬虫:scrapy爬虫框架
  • Day13 苍穹外卖项目 工作台功能实现、Apache POI、导出数据到Excel表格
  • 本地部署 MLflow 服务
  • 中宇联与亚马逊云科技共同推出Well-Architected联合解决方案
  • redis开发与运维-redis03-redis其他数据类型与命令(Bitmaps++HyperLogLog+GEO)
  • 基于pytorch的深度学习基础3——模型创建与nn.Module
  • 设计模式中单例模式中懒汉模式的问题
  • APM32F411使用IIS外设驱动es8388实现自录自播
  • Mono里运行C#脚本2—参数配置
  • 如何在Java中使用封装好的API接口?
  • 【Leetcode 热题 100】124. 二叉树中的最大路径和