gpt4 book ai didi

c# - 如何在 C# 中获取对多维数组的单个维度的引用?

转载 作者:行者123 更新时间:2023-11-30 20:11:18 25 4
gpt4 key购买 nike

我遇到了一个问题,我想创建一个数组表。这是一个二维数组,其中行数和列数在需要创建表之前在运行时是已知的。所有行的列数相同。

创建数组后,我只想对该数组的一维进行操作。也许传递对方法的引用。

这是一个虚构的例子:

// Create a table 3x3 table.
int[,] DistanceTable = new int[3, 3];
DistanceTable[0, 0] = 0;
DistanceTable[1, 1] = 0;
DistanceTable[2, 2] = 0;

DistanceTable[0, 1] = 10;
DistanceTable[0, 2] = 40;

DistanceTable[1, 0] = 10;
DistanceTable[1, 2] = 25;

DistanceTable[2, 0] = 40;
DistanceTable[2, 1] = 25;

// Why can't I do this?
int[] twos = DistanceTable[2];

如果我要使用 JaggedArray(数组的数组),它可以让我这样做。但我不需要 JaggedArray,因为我的多维数组每一行的列数始终相同。

这有可能吗?如果不是,为什么?

谢谢

最佳答案

没有。多维数组与 Jagged 数组的不同之处在于它们使用 Row-Major ordering 顺序存储在一个内存块中。 .

因此,拉出一“列”数据需要跳过才能拉出。

另一方面,交错数组是对第二个数组的引用数组。这使得从锯齿状数组中提取单个“数组”变得容易。

But I don't need a JaggedArray because my multidemsional array always has the same number of columns for each row.

.NET 中的交错数组有一些巨大的性能优化。它们通常优于多维数组。这就是为什么大多数代码分析例程会建议从二维数组转换为锯齿状数组。即使您“不需要”它,也值得考虑一下。

关于c# - 如何在 C# 中获取对多维数组的单个维度的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3964299/

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