C# 8 新特性 - 静态本地方法

从C# 8 开始,本地方法就可以是静态的了。 

与其他的本地方法不同,静态的本地方法无法捕获任何本地状态量。 

 

直接看例子: 

640?wx_fmt=png

这段代码里有两个本地方法,他们分别对实例的一个字段和方法里的一个本地变量进行了修改操作,也就是捕获并更新了本地的状态。 

 

其运行结果是: 

640?wx_fmt=png

可以看到类的成员字段和方法本地变量的状态都被这两个本地方法修改了。。 

 

避免实例状态被修改 

但是很多情况下,你并不希望类的实例字段和方法本地变量的值被捕获或修改。在C# 8里面,你可以使用静态本地方法来达到这个目的。 

其做法很简单,就是在原来这两个本地方法前面加上static关键字即可: 

640?wx_fmt=png

可以看到程序报错了,这是因为静态本地方法是不可以访问和捕获实例的状态的,包括实例成员和方法本地变量。 

 

针对第一个本地方法,我直接把更新本地变量的语句去掉: 

640?wx_fmt=png

 

而针对第二个本地方法,如果你真的想修改实例成员的状态,那么就需要把成员改为静态的: 

640?wx_fmt=png

 

其运行结果是: 

640?wx_fmt=png

 

优点 

C# 8的这个特性对可读性其实没有特别大的帮助,但是它却可以防止本地方法捕获实例状态,在一些情况下,这对性能有很大的帮助。 

更详细教程请点击原文链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/313158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

​.NET手撸2048小游戏

前言2048是一款益智小游戏,得益于其规则简单,又和 2的倍数有关,因此广为人知,特别是广受程序员的喜爱。本文将再次使用我自制的“准游戏引擎” FlysEngine,从空白窗口开始,演示如何“手撸” 2048小游戏&…

自行实现高性能MVC

wcf虽然功能多、扩展性强但是也面临配置忒多,而且restful的功能相当怪异,并且目前没法移植。asp.net core虽然支持webapi,但是功能也相对繁多、配置复杂。就没有一个能让码农们安安心心的写webapi,无需考虑性能、配置、甚至根据问…

caffe matio问题

http://blog.csdn.net/houqiqi/article/details/46469981 注:如果指令行模式实在解决不了/lib/libcaffe.so: undefined reference to Mat_VarReadDataLinear问题,可以尝试在QT下进行训练和测试。 1, 下载matio(http://sourceforge.NET/pro…

技术管理者怎样跳出“泥潭”

近几年面试了不少新人,当问到职业规划时,大多都会说先积累技术,然后往架构师的方向发展。这可能是技术人的一个特质,喜欢跟机器相处,沉浸在代码之中,而不喜欢跟人打交道。现实的情况是,一些中小…

你或许以为你不需要领域驱动设计

作者:邹溪源,长沙资深互联网从业者,架构师社区合伙人!一犹记得刚刚参加工作时,是地图厂商四维图新集团旗下的一家子公司,主要从事规划测绘相关软件研发的公司。当时我的项目是为勘测设计院提供相对应的应用…

redis为什么这么火该怎么用

最近一些人在介绍方案时,经常会出现redis这个词,于是很多小伙伴百度完redis也就觉得它是一个缓存,然后项目里面把数据丢进去完事,甚至有例如将实体属性拆分塞进redis hash里面的奇怪用法等等!原因是什么呢?…

.Net Core实现健康检查

ASP.NET Core 提供运行状况检查中间件和库,以用于报告应用基础结构组件的运行状况。运行状况探测可以由容器业务流程协调程和负载均衡器用于检查应用的状态。例如,容器业务流程协调程序可以通过停止滚动部署或重新启动容器来响应失败的运行状况检查。负载…

微软宣布加入 OpenJDK,看网上各派的热闹

微软宣布加入 OpenJDK 项目(https://www.oschina.net/news/111036/microsoft-to-participate-in-openidk),这两天在微信公众号里面有几种论调:上面这些都是Javaer的观点,在CSharper 对这件事情的反应更奇怪了&#xff…

这6点解释了罗永浩为什么要卖艺

01是的,我们的‘老赖又上热搜了。(ps:还是传统的语法,换了个人而已,味道有点改变)11 月 3 日下午,罗永浩因锤子科技的 375 万欠款被江苏丹阳法院限制高消费,他不得乘坐飞机头等舱、软卧、高铁等…

微软发布研究报告:企业数据管理普遍混乱,揭秘大数据分析趋势以及PowerBI的崛起机遇...

本文非常重要,忽略者责任自负。我们时常看到很多新闻说企业的数据分析或大数据如何如何高大上,但你自己感觉你自己所处的环境呢?很多小伙伴在群里真切的抱怨到:感觉是一坨祥云。为什么你看到的和你感受到的有如此巨大的反差&#…

Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装

Magicodes.Pay,打造开箱即用的统一支付库,已提供ABP模块封装简介Magicodes.Pay,是心莱科技团队提供的统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core。目前已提供Abp模块的封装,支…

在.NET Core 3.0中发布单个Exe文件(PublishSingleFile)

假设我有一个简单的“ Hello World”控制台应用程序,我想发送给朋友来运行。朋友没有安装.NET Core,所以我知道我需要为他构建一个独立的应用程序。很简单,我只需在项目目录中运行以下命令:dotnet publish -r win-x64 -c Release …

python import 问题

https://my.oschina.net/leejun2005/blog/109679 python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包。只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用。 如果想使用非当前模块中的…

.NET如何写正确的“抽奖”——数组乱序算法

.NET如何写正确的“抽奖”——数组乱序算法数组乱序算法常用于抽奖等生成临时数据操作。就拿年会抽奖来说,如果你的算法有任何瑕疵,造成了任何不公平,在年会现场 code review时,搞不好不能活着走出去。这个算法听起来很简单&#…

maximum mean discrepancy

http://blog.csdn.net/a1154761720/article/details/51516273 MMD:maximum mean discrepancy。最大平均差异。最先提出的时候用于双样本的检测(two-sample test)问题,用于判断两个分布p和q是否相同。它的基本假设是:如…

FineUICore基础版部署到docker实战

文 | 蒙古海军司令 合作者FineUI用了好多年,最近出了FineUICore版本,一直没时间是试一下docker,前几天买了一个腾讯云服务器,1核2g,装了centos7.6,开始的时候主要是整个个人博客,在腾讯云安装了…

2019全球Microsoft 365开发者训练营(北京站)

Microsoft365介绍:Microsoft365不仅仅是Office 365,它还包括Windows 10操作系统,以及诸多企业级移动和安全应用。它是一套可用于从小型到集团化企业的办公、协作、沟通的企业信息化解决方案。在2017年7月11日举行的Inspire年度合作伙伴大会上…

caffe/common.cu error: function atomicadd has already been defined

http://blog.csdn.NET/houqiqi/article/details/46469981 1, 下载matio(http://sourceforge.NET/projects/matio/) 2,,安装 $ tar zxf matio-X.Y.Z.tar.gz $ cd matio-X.Y.Z $ ./configure $ make $ make check $ make install sudo ldconfig (如果不执行&#x…

微软备战 RPA 市场,Power Platform,Ready GO!

最大赌注就在刚刚,微软在 Microsoft Ignite 2019 大会上,首席执行官萨蒂亚纳德拉(Satya Nadella)宣布了 Microsoft Power Platform 新平台的发布,并且说到:在与Azure合作方面,微软365&#xff0…

C# 8 新特性 - 只读struct成员

从C# 8开始,我们可以在struct的成员上使用readonly修饰符。 为struct的成员添加readonly修饰符就表示告诉编译器和开发者该成员不可以修改struct的状态。 看下面这个例子: 这里的ToString()方法不会修改Point这个struct的状态,所以我们可以在…