• C#8.0 中的 【索引与范围】


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

    在没有提供索引功能之前, 我们需要访问序列中的某个元素, 我们可以利用下标或者部分函数进行获取元素的数据, 如:获取数组中最后一个元素:
    
                string[] arr = new string[]
                {
                    "冰晶凤凰",  
                    "影流之主",  
                    "德玛西亚",  
                    "艾瑞利亚",  
                    "寒冰射手"   
                };              
    
                var str1 = arr.Last(); //寒冰射手
                var str2 = arr[arr.Length - 1];  //寒冰射手
    

    介绍索引

    在使用的的过程中, 我们可以直接在数组集合类的下标中,直接声明索引, 或者间接声明Index 类型的索引, 关于索引的使用方法, 如下:
    
                 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语法, 可以通过简单的语法声明, 即可获取到序列中的范围内所有元素, 而范围中,也支持索引的声明方式来创建范围, 使用示例如下:
    
    ## 下标中直接声明范围进行获取元素序列
    
                 //使用范围 [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进行获取元素序列
    
                Range range = 0..2; //单独声明范围
                string[] newarr = arr[range];  //冰晶凤凰、影流之主
                foreach (var r in newarr)
                {
                    Console.WriteLine($"output:{r}"); //输出:冰晶凤凰、影流之主
                }
                Console.WriteLine("-------End-------");
    
    
    ## 不指定开始与结束的范围 (默认获取所有元素序列)
    
                string[] index_default_arr = arr[..];// 写法相当于 arr[0..^0],  获取arr中所有的元素
                foreach (var r in index_default_arr)
                {
                    Console.WriteLine($"output:{r}");  //输出: 冰晶凤凰 、影流之主、德玛西亚、艾瑞利亚、寒冰射手
                }
    
    ## 指定开始或者结束的范围
    
                 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的元素, 也就是说“末尾”不包含在范围内。

  • 相关阅读:
    Groovy基本语法
    利用IntelliJ IDEA创建第一个Groovy工程
    创建maven或者Gradle项目的时候GroupId和ArtifactId以及Version是什么意思?
    使用IDEA2017创建java web +maven项目
    Eclipse集成Tomcat的步骤,我已测试N次都是成功的
    访问 Tomcat支配项目去除项目名和端口号通过IP地址(或域名)访问
    SSM框架原理,作用及使用方法
    SpringMVC整合Shiro权限框架
    svn过滤文件配置
    svn
  • 原文地址:https://www.cnblogs.com/zh7791/p/12566472.html
Copyright © 2020-2023  润新知