gpt4 book ai didi

c# - 如何复制 C# 3D 锯齿状数组

转载 作者:太空狗 更新时间:2023-10-30 01:33:50 24 4
gpt4 key购买 nike

我需要(最初)复制一个 C# 3D 锯齿状数组,foos , 到另一个 3D 数组(并最终添加 x、y、z 维度)。我想我可以使用相同的语法/逻辑来复制 foos正如我在下面所做的那样用于构建 foos(其中 row = 2,col = 3,z = 4):

private static void copyFooArray(Foo[][][] foos, ref Foo[][][] newArray)
{
for (int row = 0; row < foos.Length; row++)
{
newArray[row] = new Foo[foos[row].Length][];

for (int col = 0; col < foos[row].Length; col++)
{
newArray[row][col] = new Foo[foos[row][col].Length];

for (int z= 0; z< foos[row][col].Length; z++)
{
newArray[row][col][z] = new Foo();
newArray[row][col][z].member = foos[row][col][z].member;
}
}
}
Console.Read();
}

但我得到 Index was outside the bounds of the array. 在这一行:

newArray[row] = new Foo[foos[row].Length][];

为什么?

Foo 类:

public class Foo
{
public string member;
}

谢谢。

最佳答案

您引用的数组似乎没有正确初始化。为了设置该值,您的 newArray 必须初始化为与原始数组相同的大小。

要使其正常工作,您需要传入如下内容:

Foo[][][] firstFoo = new Foo[10][][];
Foo[][][] fooToCopy = new Foo[firstFoo.Length][][];

copyFooArray(firstFoo, ref fooToCopy);

此外,ref 关键字是不必要的,因为无论如何在 C# 中数组都是通过引用传递的。

关于c# - 如何复制 C# 3D 锯齿状数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489343/

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