如何解决C# 7.2中的结构体性能问题

技术如何解决C# 7.2中的结构体性能问题本篇内容介绍了“如何解决C# 7.2中的结构体性能问题”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔

本文介绍了关于“如何解决C# 7.2中的结构性能问题”的知识。很多人在实际案件操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!

在某些使用readonly关键字的情况下,C#编译器会创建该结构的防御副本。虽然这个问题众所周知并有记录,但仍然值得重新审视,因为它与C# 7.2的几个特性有关。in和ref readonly关键字的使用使得这个问题更频繁地发生,readonly结构提供了一个解决方案。

C#中的结构通常用于提高性能,减少分配和销毁内存的开销。然而,潜在的陷阱限制了它们的使用。C# 7.2增加了一个改进的只读结构来解决这个问题。

在以下情况下,C#编译器将创建该结构的副本:

结构不是只读的。

机构变量中使用了readonly修饰符。

调用方法(包括属性)。

如何解决C# 7.2中的结构体性能问题

当x是in参数、ref readonly局部变量或通过readonly引用返回值的方法调用的结果时,同样的规则适用。

public void BadFuncTion(insomstructs){ 0

南x;//编译器创建了一个防御副本。}C# 7.2增加了声明只读结构的可能性,并提供了一种避免创建防御性副本的解决方案。声明为readonly的结构不能有属性设置器,也不能向结构成员赋值。

我们可以通过静态分析来检测防御复制问题。ErrorProne.NET的灵感来自于一个Java静态分析工具——易错性。版本已迁移到。NET由一组罗斯林分析仪组成,它们专注于精度和性能。一些分析器适用于结构,并且可以以Nuget包的形式下载。

这里介绍一下“如何解决C# 7.2中的结构性能问题”的内容。感谢您的阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/118938.html

(0)

相关推荐

  • Laravel基于reset怎么实现分布式事务

    技术Laravel基于reset怎么实现分布式事务这篇文章主要讲解了“Laravel基于reset怎么实现分布式事务”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Lara

    攻略 2021年11月9日
  • 姓田有涵养的男孩名字,男孩帅气有涵养的名字姓王氏

    技术姓田有涵养的男孩名字,男孩帅气有涵养的名字姓王氏帅气有涵养的王氏名字:王嘉佰姓田有涵养的男孩名字、王杰宁、王钦宁、王伦昌、王子嘉、王皓诚、王哲雨、王建宝、王俊南、王博尘、王佰星、王逸林、王钦睿、王棋嘉、王子睿、王尚翔

    生活 2021年10月24日
  • sqlserver登陆后报不能为空不能为null的错误该怎么办

    技术sqlserver登陆后报不能为空不能为null的错误该怎么办sqlserver登陆后报不能为空不能为null的错误该怎么办,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴

    攻略 2021年12月1日
  • 一天饮水量多少毫升,健康人一天的需水量是多少

    技术一天饮水量多少毫升,健康人一天的需水量是多少水分约占到人体体重的2/3,是构成身体的主要成分,而且大部分器官的生理活动都要在液体环境下才能进行,所以,水对于人体至关重要一天饮水量多少毫升。人体需要多少水?人体每天通过

    生活 2021年10月27日
  • ajax的应用有哪些

    技术ajax的应用有哪些本篇内容主要讲解“ajax的应用有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax的应用有哪些”吧! ajax是

    攻略 2021年12月9日
  • 怎么优化JS代码

    技术怎么优化JS代码这篇文章主要讲解了“怎么优化JS代码”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么优化JS代码”吧!1、字符串的拼接 字符串的拼接在我们开发中会经

    攻略 2021年11月18日