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

网站建设(中企动力)/平谷头条新闻

网站建设(中企动力),平谷头条新闻,小程序开发教程源码潮汐,ai做图标教程网站struct对象可能被分配在托管堆上吗? --会的。 比如当对struct装箱的时候,就会被分配在托管堆上。 比如,让一个struct实现一个接口。 public interface IReport{string Name { get; }}public struct Score : IReport{public string Name{get {…

 

struct对象可能被分配在托管堆上吗?

--会的。

 

比如当对struct装箱的时候,就会被分配在托管堆上。

 

比如,让一个struct实现一个接口。

 

    public interface IReport
    {
        string Name { get; }
    }
    public struct Score : IReport
    {
        public string Name
        {
            get { return "80分来自struct"; }
        }
    }
 

 

再来一个类负责打印接口属性值的类和方法。

 

   public class Tester
    {
        public void Test(IReport report)
        {
            Console.WriteLine(report.Name);
        }
    }

 

然后在Main方法中如下调用:

 

        static void Main(string[] args)
        {
            var tester = new Tester();
            tester.Test(new Score());
            Console.ReadKey();
        }

 

现在,我们想查看在这过程中,struct是否发生了装箱。

 

打开"VS2012开发人员命令提示"。

 

导航到exe文件所在的文件夹,然后用ildasm反编译,把IL代码输出到一个1.txt文件中。

 

1

 

我们看到,对struct对象进行了装箱。

 

2

 

那么,如何避免装箱呢?

 

可以在Tester类中,增加一个泛型方法。

 

   public class Tester
    {
        public void Test(IReport report)
        {
            Console.WriteLine(report.Name);
        }
        public void TestGeneric<T>(T report) where T : IReport
        {
            Console.WriteLine(report.Name);
        }
    }
 

 

然后在Main方法中使用泛型方法。

 

        static void Main(string[] args)
        {
            var tester = new Tester();
            tester.TestGeneric(new Score());
            Console.ReadKey();
        }

 

再次运行,再次反编译,查看IL代码:

 

3

 

我们发现,struct已不再装箱。

 

Why?

 

在泛型方法中限定了方法参数的类型,struct满足类型的要求。当把struct对象作为实参传入时,泛型方法直接使用struct,而不是IReport,从而避免了struct的装箱。

转载于:https://www.cnblogs.com/darrenji/p/4504756.html

http://www.lbrq.cn/news/1376551.html

相关文章:

  • ecshop 企业网站/100个关键词
  • 网站制作怎么学/在百度上打广告找谁
  • 网站建设励志文章/整合营销沟通
  • 一站式网站建设报价/南宁网站建设及推广
  • 做网站 流量怎么抓钱/百度推广一般多少钱
  • 文安做网站shijuewang/免费网站注册com
  • 营销型网站建设实战感想/自创网站
  • html网站设计源码/今日中央新闻
  • 制作网站的公司注册资本要多少/站长之家seo综合查询
  • wordpress主页删除/seo上排名
  • seo网站推广杭州/做网站公司哪家比较好
  • 怎么做网站统计/创意营销策划方案
  • 做网站会遇到什么问题/提升seo排名
  • 优质做网站费用/百度小程序怎么进入
  • 网站推广网络推广/如何网络营销自己的产品
  • 做购物类网站有哪些/市场调研报告500字
  • 知乎系统是wordpress/公众号seo排名软件
  • 网站备案承诺书/seo查询在线
  • 开通网站后/中国seo排行榜
  • 牡丹江站/可免费投放广告的平台
  • php mysql网站开发.../免费推客推广平台
  • 网络营销的5种方式/邯郸seo优化公司
  • c网站开发源代码/搜索引擎优化seo网站
  • 没有空间可以做网站吗/手机百度app下载
  • 沙井商城网站建设/2021年最为成功的营销案例
  • wordpress建两个网站吗/seo兼职
  • 宁波seo链接优化/aso优化工具
  • 河源做网站优化/关键词分析
  • dede后台网站地图怎么做/seo顾问培训
  • 网站开发课程/海南网站网络推广
  • Java 大视界 -- Java 大数据在智能安防视频监控系统中的视频摘要生成与智能检索优化进阶(377)
  • Vue 详情模块 1
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现道路汽车的检测识别(C#代码,UI界面版)
  • 【Java面试题】缓存穿透
  • 物联网与AI深度融合,赋能企业多样化物联需求
  • PHP 5.5 Action Management with Parameters (English Version)