C# 静态构造函数未执行 .net core框架

news/2024/5/19 21:44:57 标签: c#, .netcore

代码如下,在执行Encoding.GetEncoding(“gb2312”);方法后报错,说没有找到对应编码,经测试,发现是静态构造函数未执行。

public static class Encodings
{
    /// <summary>
    /// 注册相关编码
    /// </summary>
    static Encodings()
    {
        // .net core 不再支持gb2312编码 需要手动注册
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
    }

    /// <summary>
    /// utf-8编码
    /// </summary>
    public static readonly Encoding UTF_8 = Encoding.UTF8;
    /// <summary>
    /// gb2312编码
    /// </summary>
    public static readonly Encoding GB2312 = Encoding.GetEncoding("gb2312");
}

将代码改成这样就恢复正常了:

public static class Encodings
{
    /// <summary>
    /// 注册相关编码
    /// </summary>
    static Encodings()
    {
        // .net core 不再支持gb2312编码 需要手动注册
        Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
        UTF_8 = Encoding.UTF8;
        GB2312 = Encoding.GetEncoding("gb2312");
    }

    /// <summary>
    /// utf-8编码
    /// </summary>
    public static readonly Encoding UTF_8;
    /// <summary>
    /// gb2312编码
    /// </summary>
    public static readonly Encoding GB2312;
}

推测是编译器认为静态构造函数无用,被优化掉了。
也可能是静态函数的调用方式并非在类加载时调用,而是在实例化static readonly参数时参数才会调用。

查找了不少相关资料,并未找到任何证据支持上面的观点。不过我尝试了反编译dll,发现dll中还是有构造函数的,应该没有被优化掉。


http://www.niftyadmin.cn/n/4989331.html

相关文章

【Java Web】使用ajax在论坛中发布帖子

AJAX 异步的JavaScript与XML&#xff0c;不是一门新技术&#xff0c;只是一个新术语&#xff1b;使用AJAX&#xff0c;网页能增量更新在页面上&#xff0c;不需要刷新整个页面&#xff1b;JSON的使用比XML使用更加普遍&#xff1b; 示例 使用jQuery发送AJAX请求&#xff1b; 实…

vue+elementui前端rules校验缓存问题

场景&#xff1a; 最近公司要求项目前端不要用element-ui&#xff0c;改为使用公司其他组开发的ui组件。 这个ui组件使用基本就是安装后&#xff0c;直接全局替换elementui的el-前缀为公司开发的xx-前缀。 替换之后&#xff0c;发现替换倒是很丝滑&#xff0c;问题不大。可以运…

JS数组原理探究!

JavaScript 数组的 API 经常会被 JS 开发者频繁使用&#xff0c;在整个 JavaScript 的学习过程中尤为重要。 数组作为一个最基础的一维数据结构&#xff0c;在各种编程语言中都充当着至关重要的角色&#xff0c;你很难想象没有数组的编程语言会是什么模样。特别是 JavaScript&…

Tomcat 日志乱码问题解决

我就是三井&#xff0c;一个永不放弃希望的男人。——《灌篮高手》 Tomcat 日志乱码问题解决 乱码原因&#xff1a;字符编码不一致 如&#xff1a;国内电脑一般都是GBK编码&#xff0c;而Tomcat日志使用的是UTF-8编码 解决方法&#xff1a;将对应字符编码由 UTF-8 改为 GBK 即…

算法通关村第十二关——不简单的字符串转换问题

前言 字符串是我们在日常开发中最常处理的数据&#xff0c;虽然它本身不是一种数据结构&#xff0c;但是由于其可以包含所有信息&#xff0c;所以通常作为数据的一种形式出现&#xff0c;由于不同语言创建和管理字符串的方式也各有差异&#xff0c;因此针对不同语言特征又产生…

Ubuntu 20.04.5 怎么安装微信

这是我的ubutun版本号 在这个系统装桌面版微信很多功能不健全。搜索了很多方法&#xff0c;这个算是不错的一个法子。 1.添加仓库 首次使用时&#xff0c;你需要运行如下一条命令将移植仓库添加到系统中。 wget -O- https://deepin-wine.i-m.dev/setup.sh | sh 2.应用安装 …

day-06 多进程服务器端 -- 进程间通信

一.多进程服务器端 &#xff08;一&#xff09;进程概念及应用 利用之前学习到的内容&#xff0c;我们的服务器可以按照顺序处理多个客户端的服务请求。在客户端和服务时间增长的情况下&#xff0c;服务器就不足以满足需求了。 1.两种类型的服务器端 &#xff08;1&#xff…

OpenCV(十一):图像仿射变换

目录 1.图像仿射变换介绍 仿射变换&#xff1a; 仿射变换矩阵&#xff1a; 仿射变换公式&#xff1a; 2.仿射变换函数 仿射变换函数&#xff1a;warpAffine() 图像旋转&#xff1a;getRotationMatrix2D() 计算仿射变换矩阵&#xff1a;getAffineTransform() 3.demo 1.…