gpt4 book ai didi

c# - 如何从多维数组中获取维度(切片)

转载 作者:IT王子 更新时间:2023-10-29 04:08:11 31 4
gpt4 key购买 nike

我想弄清楚如何从多维数组中获取单个维度(为了论证,假设它是二维的),我有一个多维数组:

double[,] d = new double[,] { { 1, 2, 3, 4, 5 }, { 5, 4, 3, 2, 1 } };

如果它是一个锯齿状的数组,我会简单地调用 d[0],这会给我一个 {1, 2, 3, 4, 5} 的数组>,有没有一种方法可以用二维数组实现同样的效果?

最佳答案

没有。您当然可以编写一个包装类来表示一个切片,并在内部有一个索引器——但没有内置的东西。另一种方法是编写一个方法来制作切片的副本,然后返回一个向量 - 这取决于您是否想要副本

using System;
static class ArraySliceExt
{
public static ArraySlice2D<T> Slice<T>(this T[,] arr, int firstDimension)
{
return new ArraySlice2D<T>(arr, firstDimension);
}
}
class ArraySlice2D<T>
{
private readonly T[,] arr;
private readonly int firstDimension;
private readonly int length;
public int Length { get { return length; } }
public ArraySlice2D(T[,] arr, int firstDimension)
{
this.arr = arr;
this.firstDimension = firstDimension;
this.length = arr.GetUpperBound(1) + 1;
}
public T this[int index]
{
get { return arr[firstDimension, index]; }
set { arr[firstDimension, index] = value; }
}
}
public static class Program
{
static void Main()
{
double[,] d = new double[,] { { 1, 2, 3, 4, 5 }, { 5, 4, 3, 2, 1 } };
var slice = d.Slice(0);
for (int i = 0; i < slice.Length; i++)
{
Console.WriteLine(slice[i]);
}
}
}

关于c# - 如何从多维数组中获取维度(切片),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4801990/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com