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引入了两种新类型,即系统索引以及系统范围. 可以在运行时使用这些结构对集合进行索引或切片。以下是系统索引结构在系统命名空间中定义
namespace System
public readonly struct Index
public Index(int value, bool fromEnd);
}
下面是系统范围结构在系统命名空间中定义
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操作符的预定义索引
System.Index operator ^(int fromEnd);
让我们用一个例子来理解这一点。考虑以下字符串数组
string[] cities = { "Kolkata", "Hyderabad", "Bangalore", "London", "Moscow", "London", "New York" };
下面的代码片段显示了如何利用^运算符检索存储在数组最后一个索引中的城市名称
var city = cities[^1];
Console.WriteLine("The selected city is: " + city);
这是完整的程序供你参考
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中提取序列的子集
你可以利用系统范围在使用数组和跨度类型时提取序列的子集。下面的代码片段演示了如何使用范围和索引来显示字符串的最后六个字符
string str = "Hello World!";
Console.WriteLine(str[^6..]);
执行程序时,输出“World!”应出现在控制台窗口中,如下图所示
IDG公司
下面是另一个说明切片工作原理的示例
int[] integers = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
var slice = integers[1..5];
foreach (int i in slice)