服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#8.0中的索引与范围功能介绍

C#8.0中的索引与范围功能介绍

2022-12-22 14:47痕迹g C#

这篇文章介绍了C#8.0中的索引与范围功能,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

C#8.0中, 新增了一个索引与范围的功能, 为访问序列中的单个元素或范围提供了一种简洁的语法。

在没有提供索引功能之前, 我们需要访问序列中的某个元素, 我们可以利用下标或者部分函数进行获取元素的数据, 如:获取数组中最后一个元素:

?
1
2
3
4
5
6
7
8
9
10
11
string[] arr = new string[]
{
    "冰晶凤凰"
    "影流之主"
    "德玛西亚"
    "艾瑞利亚"
    "寒冰射手"  
};             
 
var str1 = arr.Last(); //寒冰射手
var str2 = arr[arr.Length - 1];  //寒冰射手

介绍索引

在使用的的过程中, 我们可以直接在数组集合类的下标中,直接声明索引, 或者间接声明Index 类型的索引, 关于索引的使用方法, 如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string[] arr = new string[]
{
    "冰晶凤凰"//^5  
    "影流之主"//^4
    "德玛西亚"//^3
    "艾瑞利亚"//^2  = ...
    "寒冰射手"   //^1  =arr.Length-1
};              //^0  =arr.Length 
 
//使用索引 ^1 获取最后一个元素
Console.WriteLine($"output:{arr[^1]}"); //output:寒冰射手
Console.WriteLine("-------End-------");
 
//创建索引 Index index=^1 获取最后一个元素
Index index = ^1;
Console.WriteLine($"output:{arr[index]}"); //output:寒冰射手
Console.WriteLine("-------End-------");

介绍范围

8.0中, 提供了Range语法, 可以通过简单的语法声明, 即可获取到序列中的范围内所有元素, 而范围中,也支持索引的声明方式来创建范围, 使用示例如下:

## 下标中直接声明范围进行获取元素序列

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//使用范围 [0..2] 获取索引0和1的元素,不包含末尾索引2的元素
string[] newarr = arr[0..2];  //冰晶凤凰、影流之主
foreach (var r in newarr)
{
    Console.WriteLine($"output:{r}");
}
Console.WriteLine("-------End-------");
 
string[] index_range_xarr = arr[0..^1]; //指定开始和结束范围,  从0开始到倒数第二个
foreach (var r in index_range_xarr)
{
    Console.WriteLine($"output:{r}");  //输出: 冰晶凤凰、影流之主、德玛西亚、艾瑞利亚
}
Console.WriteLine("-------End-------");

 ## 单独创建Range进行获取元素序列

?
1
2
3
4
5
6
7
Range range = 0..2; //单独声明范围
string[] newarr = arr[range];  //冰晶凤凰、影流之主
foreach (var r in newarr)
{
    Console.WriteLine($"output:{r}"); //输出:冰晶凤凰、影流之主
}
Console.WriteLine("-------End-------");

 ## 不指定开始与结束的范围 (默认获取所有元素序列)

?
1
2
3
4
5
string[] index_default_arr = arr[..];// 写法相当于 arr[0..^0],  获取arr中所有的元素
foreach (var r in index_default_arr)
{
    Console.WriteLine($"output:{r}");  //输出: 冰晶凤凰 、影流之主、德玛西亚、艾瑞利亚、寒冰射手
}

 ## 指定开始或者结束的范围

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
string[] index_end_arr = arr[..^0];// 写法相当于 arr[0..^0] , 获取arr中所有的元素
foreach (var r in index_end_arr)
{
    Console.WriteLine($"output:{r}"); //输出: 冰晶凤凰 、影流之主、德玛西亚、艾瑞利亚、寒冰射手
}
Console.WriteLine("-------End-------");
 
 
string[] index_left_arr = arr[^2..];// 写法相当于 arr[^2..^0], 获取末尾的最后两个元素
foreach (var r in index_left_arr)
{
    Console.WriteLine($"output:{r}");  //输出: 艾瑞利亚 、寒冰射手
}
Console.WriteLine("-------End-------");

注:范围的结束如果有强制声明, 如 [0..2] , 那么获取的元素序列, 最终只是下标为 0和1 的元素, 不包含2的元素, 也就是说“末尾”不包含在范围内。

到此这篇关于C#8.0中的索引与范围功能的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://www.cnblogs.com/zh7791/p/12566472.html

延伸 · 阅读

精彩推荐
  • C#C#实现简单文本编辑器

    C#实现简单文本编辑器

    这篇文章主要为大家详细介绍了C#实现简单文本编辑器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    xujinshan36111132022-07-19
  • C#C#用Topshelf创建Windows服务的步骤分享

    C#用Topshelf创建Windows服务的步骤分享

    这篇文章主要给大家介绍了关于C#如何利用Topshelf创建Windows服务的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用C#具有一定的参考学习...

    缥缈的尘埃7362022-09-07
  • C#Winform消除button按下出现的虚线简单实现方法

    Winform消除button按下出现的虚线简单实现方法

    这篇文章主要介绍了Winform消除button按下出现的虚线简单实现方法,通过重写button设置Selectable参数实现该功能,具有一定参考借鉴价值,需要的朋友可以参考下...

    我心依旧4512021-10-21
  • C#Path类 操作文件类的实例

    Path类 操作文件类的实例

    下面小编就为大家分享一篇Path类 操作文件类的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    happy多乐11472022-02-12
  • C#C#如何快速释放内存的大数组详解

    C#如何快速释放内存的大数组详解

    这篇文章主要给大家介绍了关于C#如何快速释放内存的大数组的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习...

    林德熙4062022-10-28
  • C#详解C# Protobuf如何做到0分配内存的序列化

    详解C# Protobuf如何做到0分配内存的序列化

    这篇文章主要介绍了详解C# Protobuf如何做到0分配内存的序列化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    egmkang11102022-08-31
  • C#C#实现截取验证码图片

    C#实现截取验证码图片

    这篇文章主要为大家详细介绍了C#实现截取验证码图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    老狗子11132022-03-06
  • C#C# 设计模式系列教程-模板方法模式

    C# 设计模式系列教程-模板方法模式

    模板方法模式通过把不变的行为搬移到超类,去除了子类中的重复代码,子类实现算法的某些细节,有助于算法的扩展。...

    Wang Juqiang9092021-11-23