关于静态构造函数的利与弊

简介: 静态构造函数在两种情况下会执行:1,开发人员添加与 C# 中的类型具有相同名称的静态、无参数方法,来显式添加静态构造函数。2,类型具有一个用于静态字段的初始值设定项,在这种情况下,编译器会在后台添加静态构造函数。第一种情况会导致代码性能变差,微软建议在声明静态字段的位置对其进行初始化。对生成的代码进行反编译发现:1里运行库为了在精确时间运行类型初始值设定项而执行的检查会增加循环内的开销。1比

静态构造函数在两种情况下会执行:
1,开发人员添加与 C# 中的类型具有相同名称的静态、无参数方法,来显式添加静态构造函数。
2,类型具有一个用于静态字段的初始值设定项,在这种情况下,编译器会在后台添加静态构造函数。

第一种情况会导致代码性能变差,微软建议在声明静态字段的位置对其进行初始化。
对生成的代码进行反编译发现:
1里运行库为了在精确时间运行类型初始值设定项而执行的检查会增加循环内的开销。
1比2带来性能的下降,换取的好处是静态变量将在精确的可以预料到的时间被初始化。

很少有类会真正需要静态构造函数在一个精确的时间执行,因此在大多数情况下,
避免显式静态构造函数就非常有意义。

目录
相关文章
|
存储 开发框架 .NET
解锁SqlSugar新境界:利用Serialize.Linq实现Lambda表达式灵活序列化与反序列化,赋能动态数据查询新高度!
【8月更文挑战第3天】随着软件开发复杂度提升,数据查询的灵活性变得至关重要。SqlSugar作为一款轻量级、高性能的.NET ORM框架,简化了数据库操作。但在需要跨服务共享查询逻辑时,直接传递Lambda表达式不可行。这时,Serialize.Linq库大显身手,能将Linq表达式序列化为字符串,实现在不同服务间传输查询逻辑。结合使用SqlSugar和Serialize.Linq,不仅能够保持代码清晰,还能实现复杂的动态查询逻辑,极大地增强了应用程序的灵活性和可扩展性。
442 2
|
数据采集 小程序 API
通义千问Qwen2.5-Coder 全系列来咯!强大、多样、实用
千问团队开源了强大的 Qwen2.5-Coder 系列模型,涵盖 0.5B 到 32B 六种尺寸,旨在推动开放代码模型的发展。该系列模型在代码生成、修复和推理等方面表现出色,支持多种编程语言,并在多个基准测试中达到 SOTA 水平。此外,Qwen2.5-Coder 还提供了丰富的应用场景,如代码助手、Artifacts 和 Interpreter,满足不同开发者的需求。
4214 106
|
机器学习/深度学习 运维 监控
一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人
一文速览深度伪造检测(Detection of Deepfakes):未来技术的守门人
2961 0
|
人工智能 UED
清华大学研究提出用大模型做心理测量
【2月更文挑战第24天】清华大学研究提出用大模型做心理测量
818 2
清华大学研究提出用大模型做心理测量
|
存储 API 数据库
深入探索DDD与事件溯源:使用Entity Framework Core构建高效且可维护的领域驱动设计应用——从理论到实践的全方位指南,附带代码示例与最佳实践分享
【8月更文挑战第31天】本文通过实例介绍如何结合领域驱动设计(DDD)与事件溯源(Event Sourcing)及 Entity Framework Core(EF Core),构建高效且可维护的应用程序。DDD 强调业务逻辑与软件设计的紧密融合,而事件溯源则通过记录所有变更事件来重建状态。文章详细展示了创建基于 EF Core 的项目、配置数据库上下文、定义领域模型与事件,并存储和提交事件的具体步骤。通过这些技术,实现了复杂业务逻辑的持久化与重构,提高了应用程序的灵活性和扩展性。
459 0
|
前端开发 Java
前后端分离的跨域问题解决:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
本文介绍了解决前后端分离项目中跨域问题的方法,包括添加`CorsConfig`配置类和重写`WebMvcConfigurer`接口的`addCorsMappings`方法,允许前端请求访问后端资源,并提供了具体的代码示例。
前后端分离的跨域问题解决:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
|
SQL 开发框架 .NET
深入解析Entity Framework Core中的自定义SQL查询与Raw SQL技巧:从基础到高级应用的全面指南,附带示例代码与最佳实践建议
【8月更文挑战第31天】本文详细介绍了如何在 Entity Framework Core (EF Core) 中使用自定义 SQL 查询与 Raw SQL。首先,通过创建基于 EF Core 的项目并配置数据库上下文,定义领域模型。然后,使用 `FromSqlRaw` 和 `FromSqlInterpolated` 方法执行自定义 SQL 查询。此外,还展示了如何使用 Raw SQL 进行数据更新和删除操作。最后,通过结合 LINQ 和 Raw SQL 构建动态 SQL 语句,处理复杂查询场景。本文提供了具体代码示例,帮助读者理解和应用这些技术,提升数据访问层的效率和灵活性。
790 0
|
存储 机器学习/深度学习 人工智能
【AI大模型】Transformers大模型库(十六):safetensors存储类型
【AI大模型】Transformers大模型库(十六):safetensors存储类型
1507 0
|
存储 缓存 数据库连接
Entity Framework Core 跨数据库查询超厉害!多数据库连接最佳实践,让你的开发更高效!
【8月更文挑战第31天】在现代软件开发中,跨数据库查询是常见需求。Entity Framework Core(EF Core)作为强大的ORM框架,支持多种方法实现这一功能。本文介绍了在EF Core中进行跨数据库查询的最佳实践,包括:理解数据库上下文、使用多个上下文进行查询、处理数据库连接与事务,以及性能优化策略。通过创建独立的数据库上下文如`UserContext`和`OrderContext`,并在业务逻辑中同时使用它们,可以轻松实现跨库查询。此外,利用`TransactionScope`可确保事务一致性,从而提高系统的可靠性和效率。
1043 0