我有一个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
数组。
很奇怪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)