C# 8中的范围类型(Range Type)

640?wx_fmt=jpeg

C# 8.0中加入了一个新的范围类型(Range Type)。

这里我们首先展示一些代码,并一步一步为代码添加一些不同的东西, 为大家展示一下范围类型的功能和用法。

我们最原始的代码如下:

640?wx_fmt=png

这里我们显示的定义了我们查询数组的索引1-3, 并输出他们的值。毫无疑问,当我们运行程序之后,代码结果如下:

640?wx_fmt=png


但是,假设我们不想使用for循环,而是想要使用这个名为“range”的新特性, 我们可以将代码重写为:

640?wx_fmt=png

现在我们来运行程序。

640?wx_fmt=png


结果比我们预想的少了一个。这是我们使用范围类型遇到的第一个问题。

范围的起始索引是包含的,范围的结束索引是排除的

如果我们修改一下我们的代码:

640?wx_fmt=png


我们就会获得预想的结果。

范围缩写

使用范围来定义起始和结束索引非常的好用。但是如何表示从一个索引开始直到数组的最后一个对象呢?

从一个索引开始到数组的最后一个对象

640?wx_fmt=png


输出结果:

640?wx_fmt=png


从数组的第一个对象到指定索引

640?wx_fmt=png


输出结果:

Item1
Item2 Item3

整个数组

640?wx_fmt=png


输出结果:

Item1
Item2 Item3 Item4 Item5

从数组的某个索引开始一直到距数组尾部某个索引

C# 8.0提供了^操作符,^操作符表示从数组末尾计算索引。

foreach (var item in myArray[1..^1])
{Console.WriteLine(item);
}

输出结果:

Item2

Item3 Item4

范围类型

当我们编写1..4的时候,看起来就好像我们在使用新的语法,实际上这只是个语法糖,实际上它初始化一个Range类对象,就好像我们可以使用{“1”, “2”, “3”}就可以创建一个数组一样。

640?wx_fmt=png


替代Substring方法

使用范围类型的另一个好处就是你可以使用它替换String.Substring方法, 写起来更加简单。

Console.WriteLine("123456789"[1..4]);

原文地址:https://www.cnblogs.com/lwqlun/p/10095821.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com
640?wx_fmt=jpeg

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

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

相关文章

选数游戏(ybtoj-二叉堆)

文章目录题目描述解析代码thanks for reading!题目描述 解析 一道很考验代码能力与思维的题 (我不是在为自己的菜找理由) 首先由于可以每一列都有类似于环的性质 所以我们可以忽略点的出入的纵坐标的位置,只考虑每列选几个 首先&…

CF741C Arpa’s overnight party and Mehrdad’s si

题目描述: 有n对情侣(2n个人)围成一圈坐在桌子边上,每个人占据一个位子,要求情侣不能吃同一 种食物,并且桌子上相邻的三个人的食物必须有两个人是不同的,只有两种食物(1或者是2&…

开源库支付库Magicodes.Pay发布

Magicodes.Pay,是心莱科技团队提供的统一支付库,相关库均使用.NET标准库编写,支持.NET Framework以及.NET Core。目前支持以下支付方式和功能:支付宝APP支付支付宝Wap支付支付宝国际支付 支持分账微信小程序支付微信APP支付统一支…

火车载客(ybtoj-二叉堆)

文章目录题目描述解析我的思路代码题解思路题目描述 解析 我的思路 其实就是线段覆盖的一个变体 贪心的想: 把游客按右端点升序排序 后面的证明就和线段覆盖一样了 如果有两个游客冲突 我们应该选右端点靠右的 因为这样对以后继续在右边出现的游客来说肯定不会更差…

NetCore基于EasyNetQ的高级API使用RabbitMq

一、消息队列消息队列作为分布式系统中的重要组件,常用的有MSMQ,RabbitMq,Kafa,ActiveMQ,RocketMQ。至于各种消息队列的优缺点比较,在这里就不做扩展了,网上资源很多。更多内容可参考 消息队列及…

二分图匹配(二)

文章目录例题:NC20483 [ZJOI2009]假期的宿舍题目描述:题解:NC51316 Going Home题目描述:题解:NC107638 poj3041 Asteroids题目描述:题解:NC20472 [ZJOI2007]矩阵游戏题目描述:题解&a…

质数和分解(动态规划)

文章目录题目描述解析记忆化搜索代码无限背包代码thanks for reading!题目描述 解析 很好的题 记忆化搜索 我一开始的思路就是记忆化搜索 为了不重复,搜索的时候规定拆出来一个数A后一会不能再拆比A更小的了 这样就不难写了 (忽略我n^2的素…

【.NET Core项目实战-统一认证平台】第十章 授权篇-客户端授权

上篇文章介绍了如何使用Dapper持久化IdentityServer4(以下简称ids4)的信息,并实现了sqlserver和mysql两种方式存储,本篇将介绍如何使用ids4进行客户端授权。.netcore项目实战交流群(637326624),…

内存管理(ybtoj-二叉堆)

文章目录题目描述解析代码题目描述 解析 这题感觉做的不错 不难看出,要维护一个空闲的优先队列,在每次申请时弹出编号最小的 但是对判断当前哪些被访问的内存重新进入空闲状态是一个难题 最简单的办法是存起来每次扫一遍判断 但这样在极端数据时会TLE&…

[翻译]初试C# 8.0

原文地址: https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/初试C# 8.0昨天我们宣布了Visual Studio 2019的第一个预览版(使用Visual Studio 2019提高每个开发人员的工作效率)和.NET Core 3.0(宣布.NET Core 3预览…

上帝造题的七分钟(ybtoj-树状数组)

文章目录题目描述解析代码thanks for reading!题目描述 解析 差点活活恶心死 搬砖题 (其实细节没有那么多,还是代码能力太差) 利用矩阵的二维差分 加上树状数组搞一搞 就完事了(我实在不想再写了 ) 洛谷…

.NET Core微服务之路:让我们对上一个Demo通讯进行修改,完成RPC通讯

最近一段时间有些事情耽搁了更新,抱歉各位了。上一篇我们简单的介绍了DotNetty通信框架,并简单的介绍了基于DotNetty实现了回路(Echo)通信过程。我们来回忆一下上一个项目的整个流程:当服务端启动后,绑定并…

Visual Studio 2019 首个预览版本抢先看,有啥新功能?

微软在 Connect 2018 大会上发布Visual Studio 2019 第 1 个预览版本。该预览版本中展示了许多变更,从 IDE 的启动行为,到代码重构功能;从搜索功能的更多用法,到更好的大型项目导航。这个预览版本展现了微软希望尽全力帮助开发人员…

模板:网络流(Dinic算法)

文章目录1.网络最大流题目描述解析反悔边分层(避免环流)时间优化代码2.费用流描述解析代码1.网络最大流 洛谷P3376 题目描述 给出一个网络图,以及其源点和汇点,求出其网络最大流。 解析 网络流的思想就是在原有的基础上不断进…

NC51272 棋盘覆盖

题目: 给出一张nn(n≤100) 的国际象棋棋盘,其中被删除了一些点,问可以使用多少1*2的多米 诺骨牌进行掩盖。 题解: 先进行黑白染色,相邻的两个黑白就是一个骨牌,又因为一个格子不能放多个骨牌,…

微软推出 VS Code 新特性,为 TypeScript 和 JavaScript 用户提供 AI 辅助开发功能

除了开发人员非常喜欢的IntelliSense和代码完成之外,今年早些时候,微软还发布了IntelliCode,提供了一组 AI 辅助开发功能。VS Code 团队现在宣布了一项新的实验性扩展,将 IntelliCode 带给了 TypeScript 和 JavaScript 用户。VS C…

NC107617 poj3020 Antenna Placement

问题: n * m的矩阵,有一些障碍点,用12的骨牌覆盖所有非障碍点 (12骨牌可重叠,骨牌可越界,骨牌可延伸到障碍点) 问最少需要 多少个。 题解: • 尽量用一个骨牌覆盖两个格子,覆盖不了了再重叠使…

货车运输(洛谷P1967)(倍增)

传送门 文章目录题目描述题目解析代码题目描述 题目解析 本题如果告诉你,城市形成了一棵树,是不是就迎刃而解了呢? 本题的关键就是把稠密图转化为一片森林(就是可能有很多棵树啦) 怎么转化呢? 考虑哪些边是没用的 如果AB已经可…

.NET Core实战项目之CMS 第十一章 开发篇-数据库生成及实体代码生成器开发

上篇给大家从零开始搭建了一个我们的ASP.NET Core CMS系统的开发框架,具体为什么那样设计我也已经在第十篇文章中进行了说明。不过文章发布后很多人都说了这样的分层不是很合理,什么数据库实体应该跟仓储放在一起形成领域对象,什么ViewModel应…

第1节 连通性强连通、割点和桥(一)

文章目录无向图割点、桥、双连通分量Tarjan算法求割点和桥(割边)代码:边双连通分量 和 点双连通分量代码边双连通分量 和 点双连通分量 的缩点有向图的弱连通与强连通强连通分量Kosaraju算法Tarjan算法代码:无向图割点、桥、双连通…