范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

C本地函数

  前言
  前一段时间在看.Net Core 3.0与.Net Core 2.0在性能测试对比,发现在3.0相对2.0有了很大的提升,在对比ConcurrentDictionary 中与.NetFramework源码对比,发现本地函数这个相对新的语法.对于长期使用VS2008的我来说,这个语法是真的很新了(2019年写 ).
  VS2019在更新到16.2.5(Windows版本),VS For Mac 最新版本也同步支持了,一个好的功能,根据类型导入命名空间(未引用dll的时候),这个功能在Java(Idea中)很早之前就有了。本地函数(c# 7.0)
  看ConcurrentDictionary(.Net Core 3.0)中的IsEmpty函数源码:public bool IsEmpty {     get     {         // 第一次调用内部的本地函数,未加锁,验证不为真的时候         if (!AreAllBucketsEmpty())         {             return false;         }          int acquiredLocks = 0;         try         {                         // 加锁             AcquireAllLocks(ref acquiredLocks);              return AreAllBucketsEmpty();   // 再次调用本地函数         }         finally         {             // 释放锁             ReleaseLocks(0, acquiredLocks);         }          //在函数内部,定义本地函数,可以在当前函数内部,进行多次调用         bool AreAllBucketsEmpty()         {             int[] countPerLock = _tables._countPerLock;             for (int i = 0; i < countPerLock.Length; i++)             {                 if (countPerLock[i] != 0)                 {                     return false;                 }             }              return true;         }     } }
  在<> 一文中,看到ConcurrentDictionary,和 ConcurrentQueue 中的IsEmpty在.Net Core 2.1 和 .Net Core 3.0性能对比相差是很大的。在看过源码中,可以看到主要是在锁处理,第一次判断字典内元素是否为空是没有加锁的,当然是在CLR应该也是做了不少优化。
  本地函数,在项目中使用还是很好的.数字文本语法改进(7.0),只是语法糖//数字文本改进 //下面这样,更容易使用和读取 int num = 100_000_000;   //数字中的下划线,在编译的时候,由编译器自动剔除 Console.WriteLine(#34;num={num}");
  查看生成后的代码:IL_0000: nop IL_0001: ldc.i4 100000000   //查看编译之后il代码,可以看到数字中的下划线已经在编译的时候自动剔除了 IL_0006: stloc.0 IL_0007: ldstr "num={0}" IL_000c: ldloc.0 IL_000d: box [mscorlib]System.Int32 IL_0012: call string [mscorlib]System.String::Format(string,  object) IL_0017: call void [System.Console]System.Console::WriteLine(string)
  这个语法糖,在项目中没见使用过,属于存在感不强的.更好用的using(c# 8.0)//using { xxx} 可以去掉大括号{}  using FileStream stream = new FileStream("hello.txt", FileMode.OpenOrCreate); string str = "0x5A4D"; //测试数据 byte[] buffer = Encoding.UTF8.GetBytes(str); stream.Write(buffer, 0, buffer.Length);  List list = new List(); for (int i = 0; i < 100; i++) {     list.Add(i + 1); } Console.WriteLine(list[9]); Console.WriteLine("Hello World!");  //多次使用using using var con = new SqlConnection("");
  上边的代码,查看编译成后的代码,大括号(作用域)自动加上using (FileStream fileStream = new FileStream("hello.txt", FileMode.OpenOrCreate)) {     byte[] bytes = Encoding.UTF8.GetBytes("0x5A4D");     fileStream.Write(bytes, 0, (int)bytes.Length);     List nums = new List();     for (int i = 0; i < 100; i = checked(i + 1))     {         nums.Add(checked(i + 1));     }     Console.WriteLine(nums[9]);     Console.WriteLine("Hello World!");     using (SqlConnection sqlConnection = new SqlConnection(""))     {     } }
  可以通过编译后的代码,发现using 新的用法也只是个语法糖.对于文件和数据库连接还是使用using管理方便,在项目中遇到使用文件后,没有关闭,出现占用的异常.
  个人能力有限,如果您发现有什么不对,请私信我
  如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流

华为P50宝盒(Pocket)折叠屏旗舰手机将于12月23日发布IT之家12月14日消息,华为宣布将于12月23日1530举行华为冬季旗舰新品发布会,主题为光影交织,万物共生。官方放出的海报显示,此次新机名为华为P50Pocket,中文名可能是股价正式腰斩!小米市值蒸发超3700亿港元12月15日消息,小米集团尾盘下挫跌超4报17。68港元股,总市值跌破3600亿港元关口。AI财经社获悉,自年初小米股价创造历史新高的35。9港元后,小米便陷入震荡走跌态势,不到一华为无奈退场,小米OV问题逐渐凸显,苹果登顶第一并非没有道理自从小米时代开始,国产手机的发展速度就开始呈爆发式增长,而2014年更是百花齐放,小米魅族OV以及华为等品牌都开始崛起,并且用户可选择的产品也比较多。其中,华为属于整个国产手机行业胜负已分?美59家芯片巨头联名逼宫,台积电不可能成功一年前,华为的任正非发表了题为向上捅破天,向下扎到根的讲话。任正非说,我国的经济总量这么大,就像一棵大树,根不强是不行的!我们的很多科技企业,都是依靠买来主义迎来泡沫式发展,而忽视拼多多广告说下载一个可以9。9元抢iphone13是真的吗?这你也信啊啊啊!现在谁的手机没有收到某多多这个链接啊!但我可以明白的告诉你,这个手机你是永远拿不到的啊!这就是这个公司的可恶之处,试问一下几个人看见这样的链接不下载啊!(9块多一点Linuxnetstat命令详解简介Netstat命令用于显示各种网络相关信息,如网络连接,路由表,接口状态(InterfaceStatistics),masquerade连接,多播成员(MulticastMem安卓2。3和安卓8。0有什么区别?区别谁都能看出来好吧这是安卓2。3(姜饼)的界面4。0(冰淇淋三明治)界面系统特性1Android统一版本电哪些手机可以用三年以上?三年半,换了两次屏360手机用了四年多了,还是挺好用的。18年4月份入手的xr。用到现在功能正常。无维修。玩游戏也是轻轻松松。当然缺点就是电量消耗很快。一天两充。其他几乎没毛病你好12月15日消息梳理二国金新能源车丰田发布全球电动化战略昔日燃油巨头毅然转身,电动化迎来重大契机12月14日,丰田召开电动车战略发布会,宣布将投资700亿美元用于电动车开发,纯电动投资占一半,达350亿英特尔CEO拜访台积电消息称已敲定3nm代工产能财经网科技12月15日讯,据凤凰网科技消息,英特尔执行长基辛格闪电访台,并于昨(14)日的预录影片中强调与晶圆代工龙头台积电紧密合作的伙伴关系。市场传出,基辛格昨天已与台积电高层见英特尔投资70亿美元在马来西亚建厂据彭博社报道,英特尔公司正斥资70亿美元在马来西亚建设一家新的芯片封装工厂,这是一项重大的亚洲投资,旨在在华盛顿提倡国内生产之际解决普遍存在的全球半导体短缺问题。马来西亚主要的投资
造车界玩门高手你可能连门都不会开据玩门高手高合汽车官方消息,其第二款量产车将会在今年下半年亮相,新车将会是略冷门的电动轿车。高合HiPhiX车门号称全球首创全电动免触控NT展翼门该消息来源是高合汽车品牌与用户发展不再纠结二手车刘亦菲代言大众全新电动车将上市作为上汽大众今年于新能源领域的重点新车,ID。4X此前一经发布便成为消费者所关注的重点,一来这款车型基于MEB平台打造,这是大众专为纯电车型打造的最新平台,二来上汽大众的国民度很高唯一的V12全新迈巴赫S级年内上市猜一下售价日前获悉,全新梅赛德斯迈巴赫S级轿车将在年内上市,新车由内之外无处不以尊贵典雅之姿,专属双色车漆被首次引入分界线设计,内饰做工用料极尽奢华,而梅赛德斯奔驰品牌唯一的6。0升双涡轮增劳斯莱斯也推纯电动车低调又奢华日前,有海外媒体报道,劳斯莱斯目前正计划打造一款全新豪华纯电车型,新车或将基于Phantom(幻影)平台进行打造。据悉,这款全新电动车会搭载与宝马iX相同的动力总成及电池。宝马集团刚出道即获代言华为公主姚安娜成长城摩卡代言人1月15日,长城汽车旗下品牌WEY(魏派)全新SUV摩卡正式官宣,代言人请到了华为创始人CEO任正非的小女儿姚安娜。为什么要请姚安娜代言?据WEY官方的说法,姚安娜所展现出来的特质阿斯顿马丁2025年造两款纯电动车2030年90电动化据悉,阿斯顿马丁将从2025年开始在英国制造纯电动车,而不是由其商业伙伴梅赛德斯在德国组装,其中在英格兰盖登(Gaydon,England)工厂生产一款纯电动跑车,在威尔士圣阿森(二手车怎么挑选?购车细节帮你躲开泡水翻新车新车千篇一律定价统一,而二手车每一台都有它的不同之处。买新车比较简单,只需要确定自己的颜色和配置偏好,剩下的就是争取最大优惠即可而买二手车,谈价格只是一个方面,还需要注意车辆的车况尼日利亚首款本地生产电动车上市售价超6万美元尼日利亚首辆本地生产的电动汽车现代科纳(HyundaiKona)本月由联邦政府通过国家汽车设计与发展委员会(NADDC)正式上市,售价约为2400万奈拉(约63000美元)。新车上硅谷成功的奥秘源自对叛逆精神的宽容与支持?吴军的书可以从一定程度上颠覆人们对信息时代的认识,对创新和创业的重新理解。这本硅谷之谜恰好是分析硅谷起源和发展对硅谷创新力进行深刻剖析的一本好书。在世界范围内,能挣大钱的公司有的是为什么感觉贫困像真的贫困一样伤人?断裂的阶梯探讨了为什么贫困的女性往往更早生育且拥有更多的孩子,为什么工人阶级在审慎投资未来方面缺乏信任,为什么人们对社会地位的认知会影响他们的政治信仰并导致更大的政治分歧,贫困如何全世界都在读的企鹅欧洲史究竟好在哪?有一段较长的时间可以静下心来读一套系列的历史属于一件很幸福的事。这套企鹅欧洲史不只是单纯的政治军事战争史,而是一个包涵了政治战争文化宗教艺术商业经济建筑农业甚至小到道路建设与普通农