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

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

我们最原始的代码如下:

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

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

现在我们来运行程序。

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

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

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

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

范围缩写

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

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

输出结果:

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

输出结果:

Item1Item2
Item3

整个数组

输出结果:

Item1Item2
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”}就可以创建一个数组一样。

替代Substring方法

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

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

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

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

C# 8中的范围类型(Range Type)相关推荐

  1. C# NX二次开发:制图模块中尺寸线标注类型的type值和subtype值归纳总结

    今天介绍的是ug制图模块中尺寸线类型的type值和subtype值都有哪些,省去了大家自己归纳总结的时间. 大家都知道其实ug中想要了解对象的type和subtype值可以通过ug中自带的" ...

  2. SAP中,物料类型(material type)和物料组(material group)有什么区别

    物料类型 material type 是物料最基础的特征,一般用于科目确定.价值评估.确定号码范围.确定采购类型.价格控制和字段选择.如SAP系统内置物料类型有:原材料 raw material(RO ...

  3. PADS2007中的层类型(plane type) 简介

    所有平面层中包括非特殊层(非平面层NO PLANE,通常为走线ROUTING层)和特殊层(包括CAM平面层及SPLIT分割混合层). 1. No plane:通常指走线层,如Top   Bottom, ...

  4. SAP CRM中的文本类型 - Text Type

    Created by Wang, Jerry, last modified on Jan 02, 2015

  5. HTML5 中的 input 元素的输入类型(type 属性的取值)

    目录 输入类型:text 输入类型:image 输入类型:reset 输入类型:password 输入类型:submit 输入类型:radio 输入类型:checkbox 输入类型:button 输入 ...

  6. Elasticsearch中字段类型(Field Type)详解

    ElasticSearch 7.7 字段类型(Field datatype)详解 字符串, object, 数值, 日期, 数组, 0x00 字符串: text, keyword 5.0以后,stri ...

  7. SAP WM中阶存储类型里的Full stk rmvl 字段和Return Storage type字段

    SAP WM中阶存储类型里的Full stk rmvl 字段和Return Storage type字段 SAP WM存储类型的配置里,可以配置从某个存储区域里下架的时候都是全数下架,不管需要下架的数 ...

  8. java中的类型擦除type erasure

    文章目录 简介 举个例子 原因 解决办法 总结 java中的类型擦除type erasure 简介 泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型 ...

  9. C#中的值类型(value type)与引用类型(reference type)的区别

    ylbtech- .NET-Basic:C#中的值类型与引用类型的区别 C#中的值类型(value type)与引用类型(reference type)的区别 1.A,相关概念返回顶部 C#中有两种数 ...

最新文章

  1. 用自定义IHttpModule实现URL重写
  2. php curl_init不能用,curl_init()函数不起作用
  3. springboot Autowired BeanNotOfRequiredTypeException
  4. Selenium 特点
  5. Vue 学习笔记(3)路由的基本使用 结合 SpringBoot
  6. 如何在程序中画出实际大小为7CM半径的圆
  7. qt的qfiledialog怎么判断打开的是不是一张图片_花瓣网画板图片一键导出 设计师速来围观...
  8. C-Free 您不能使用调试解决方案
  9. php 苹果apple登陆
  10. Reactjs源码分析
  11. 51单片机 ADC0832酒精传感器
  12. HTTP 十分钟教程
  13. Python数据分析中数据预处理:编码将文字型数据转换为数值型
  14. 第五十五讲 插件设备树
  15. X-Files 目录及剧情简介
  16. 美国计算机科学奥林匹克竞赛试题acsl,2020年国际数学奥林匹克竞赛试题全部出炉,网友:给答案都看不懂...
  17. microsoft outlook “未读邮件”收藏夹被误删
  18. 新未来,决战支付大数据
  19. 理光Ricoh Aficio MP 2011LD 一体机驱动
  20. 快速、简洁且高效的博客框架hexo

热门文章

  1. 你与一份好简历之间的距离
  2. H5在WebView上开发小结
  3. 905. 按奇偶排序数组
  4. Erlang 进程创建性能测试
  5. cookies,sessionStorage 和 localStorage 的区别?
  6. centos安装kvm
  7. C++的enum hack
  8. keepalived 原理,安装,配置
  9. Outlook 阅读窗格(Reading Pane)
  10. Hello Blazor:(15)使用bUnit进行单元测试