c#中用于数组的范围操作符

本文关键字:范围 操作符 数组 用于 | 更新日期: 2023-09-27 18:06:24

我有一个3D数组int数组

arr1 = new int[2,2,2];

我想创建另一个数组,这次是2D,它将是arr1的一部分。

Sudo代码:

arr2 = arr1[..,..,2]

..表示所有元素

(create 2D array from arr1 for third dimensional (rank) index = 2)

但是c#中似乎没有数组的范围操作符。是我说对了,还是我忽略了什么?

在其他语言中有一些标记所有元素的范围操作符,例如:..:

我想避免迭代arr1数组。

c#中用于数组的范围操作符

很奇怪Google给你带来了这样一个老问题,但是现在c# 8+有范围运算符(..)

例如:

var testArray = new[] { a, b, c, d, e, f };
var a = testArray[..]; // gets all elements (a,b,c,d,e,f)
var b = testArray[0..3]; // gets first 3 elements (a,b,c)
var c = testArray[3..5]; // gets elements 3 and 4 (d,e)
var d = testArray[^3..]; // gets all elements starting from 3
// but count starts from the end, that is testArray.Length - 3 (d,e,f)

查看更多示例:https://learn.microsoft.com/en - us/dotnet/csharp/language reference/proposals/csharp - 8.0 -/-范围

您可以编写自己的扩展

public static void getRange(this int[] array, int start, int end) {
    //your for loop
}

然后使用arr1.getRange(1,2)