前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在C#中使用索引和范围

如何在C#中使用索引和范围

作者头像
zls365
发布2021-04-23 12:47:07
1.9K0
发布2021-04-23 12:47:07
举报
文章被收录于专栏:CSharp编程大全

C#8.0中有几个有趣的新特性和增强功能。指数和区间是两个新的增加-作为新的系统索引以及系统范围分别是用于索引和切片的类型。本文讨论如何在C#8.0中使用索引和范围

要使用本文提供的代码示例,您应该在系统中安装VisualStudio2019。如果您还没有副本,可以在此处下载VisualStudio2019

在VisualStudio2019中创建控制台应用程序项目

首先,让我们在VisualStudio中创建一个.NET核心控制台应用程序项目。假设系统中安装了Visual Studio 2019,请按照下面概述的步骤在Visual Studio中创建新的.NET核心控制台应用程序项目

启动Visual StudioIDE。单击在“创建新项目”窗口中,从模板列表中选择“控制台应用程序(.NET Core)”显示。在在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。

这将在VisualStudio2019中创建一个新的.NET核心控制台应用程序项目。我们将在本文的后续部分中使用这个项目

在Visual Studio中更新语言版本

为了能够在visualstudio中使用C#8.0,您应该使用一个以.netcore为目标的项目,就像我们正在做的那样。您还需要更改项目中使用的语言的语言版本。为此,请遵循以下步骤:

右键单击项目。选择“属性”来调用属性窗口。单击在语言版本的下拉控件上。这个系统索引以及系统范围结构

C#8.0引入了两种新类型,即系统索引以及系统范围. 可以在运行时使用这些结构对集合进行索引或切片。以下是系统索引结构在系统命名空间中定义

代码语言:javascript
复制
namespace System
{
    public readonly struct Index
    {
        public Index(int value, bool fromEnd);
    }
}

下面是系统范围结构在系统命名空间中定义

代码语言:javascript
复制
namespace System
{
    public readonly struct Range
    {
        public Range(System.Index start, System.Index end);
        public static Range StartAt(System.Index start);
        public static Range EndAt(System.Index end);
        public static Range All { get; }
    }
}

使用系统索引在C#8.0中,从末尾索引集合

在C#中,从最后到C#8.0,没有任何方法可以索引集合。现在,您可以通过使用一元^“hat”运算符和必须为系统.Int32是的

下面是如何在C#8.0中定义来自end操作符的预定义索引

代码语言:javascript
复制
System.Index operator ^(int fromEnd);

让我们用一个例子来理解这一点。考虑以下字符串数组

代码语言:javascript
复制
string[] cities = { "Kolkata", "Hyderabad", "Bangalore", "London", "Moscow", "London", "New York" };

下面的代码片段显示了如何利用^运算符检索存储在数组最后一个索引中的城市名称

代码语言:javascript
复制
var city = cities[^1];
Console.WriteLine("The selected city is: " + city);

这是完整的程序供你参考

代码语言:javascript
复制
using System;
namespace RangesAndIndexes
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] cities = { "Kolkata", "Hyderabad", "Bangalore",
            "London", "Moscow", "London", "New York" };
            var city = cities[^1];
            Console.WriteLine("The selected city is: " + city);
            Console.ReadKey();
        }
    }
}

当您执行程序时,输出应该出现在控制台窗口中,如下图所示

IDG公司使用系统范围在C#8.0中提取序列的子集

你可以利用系统范围在使用数组和跨度类型时提取序列的子集。下面的代码片段演示了如何使用范围和索引来显示字符串的最后六个字符

代码语言:javascript
复制
string str = "Hello World!";
Console.WriteLine(str[^6..]);

执行程序时,输出“World!”应出现在控制台窗口中,如下图所示

IDG公司

下面是另一个说明切片工作原理的示例

代码语言:javascript
复制
int[] integers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var slice = integers[1..5];
foreach (int i in slice)
Console.WriteLine(i);

执行上述程序时,控制台窗口将显示数字1到4

也可以将范围操作数传递到[。。]括号显示在下面给出的代码片段中

代码语言:javascript
复制
string[] cities = { "Kolkata", "Hyderabad", "Bangalore", "London", "Moscow", "London", "New York" };
var data = cities[0..4];
foreach (var city in data)
{
   Console.WriteLine(city);
}

执行程序时,存储在数组中的前四个城市名称将显示在控制台窗口中

在C#8.0之前,没有任何语法上有效的方法来访问C#中集合的范围或片段。现在有了两个新的语法糖^(hat)和“..”(range)操作数,用于访问集合中的单个元素或范围,从而使代码干净、可读和可维护

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CSharp编程大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档