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

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

代码如下,在执行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.lryc.cn/news/153061.html

相关文章:

  • Java 复习笔记 - 学生管理系统篇
  • 【UIPickerView-UIDatePicker-应用程序对象 Objective-C语言】
  • 仿京东 项目笔记1
  • huggingface transformers库中LlamaForCausalLM
  • 04-过滤器和拦截器有什么区别?【Java面试题总结】
  • 如何用selenium或pyppeteer来启动多个AdsPower窗口
  • 京东店铺所有商品API接口数据
  • stm32之27.iic协议oled显示
  • paddle 1-高级
  • ChatGPT帮助高职院校学生实现个性化自适应学习与对话式学习
  • 如何通过python写接口自动化脚本对一个需要调用第三方支付的报名流程进行测试?
  • 将OSGB格式数据转换为3d tiles的格式
  • 【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】
  • 素数求原根
  • 【Apollo学习笔记】——规划模块TASK之PATH_ASSESSMENT_DECIDER
  • 09 mysql fetchSize 所影响的服务器和客户端的交互
  • DevEco Studio 配置
  • Nginx自动探活后端服务状态自动转发,nginx_upstream_check_module的使用
  • CSS 一个好玩的卡片“开卡效果”
  • lintcode 667 · 最长的回文序列【中等 递归到动态规划】
  • oracle sql语言模糊查询
  • 【Ubuntu】解决ubuntu虚拟机和物理机之间复制粘贴问题(无需桌面工具)
  • 解决ubuntu文件系统变成只读的方法
  • 高数刷题笔记
  • c++入门一
  • 2023年项目进度管理平台排行榜
  • 【设计模式】面向对象设计八大原则
  • python数分实战探索霍尔特法之销售预测python代码实现以及预测图绘制
  • java线程状态
  • 编译问题:error: ‘printf’ was not declared in this scope