在 C# 中将列表列表的成员分配给二维数组

问题描述 投票:0回答:2

我创建一个列表列表:

        List<List<string>> C = new List<List<string>>();

然后给它赋一些值。假设赋值如下:

            for(int j = 0; j < x; j++) 
                for (int i = 0; i < y; i++)
                    B.Add(i.ToString());
                C.Add(B);

x 和 y 在每次运行代码时都不同。所以,我事先不认识他们。 (在代码的这一点上,我不知道如何找到 C 的大小。我的意思是 x 和 y,而不是 x*y。)

我想将 C 分配/复制到二维数组 D[,]。在声明 D 之前,D 的大小(即对应于 x 和 y 的行和列)应该已经通过某种方式通过 C 进行了计算。我该如何赋值?

c# arrays list multidimensional-array
2个回答
0
投票

您不能只将 锯齿状数组 值分配给二维数组,因为这些结构存储数据的方式不同。锯齿状数组是一个数组,每个元素存储对另一个数组的引用,而二维数组是存储在内存中的一系列元素。

另外,不能简单地将列表的列表的值赋值给二维数组或交错数组类型的变量,因为这些是不同的数据类型,需要显式转换。

所以你需要将每个元素复制到新数组中。

int numRows = C.Count;
int numCols = C[0].Count;

string[,] D = new string[numRows, numCols];

for (int row = 0; row < numRows; row++)
    for (int col = 0; col < numCols; col++) 
        D[row, col] = C[row][col];

-1
投票

首先必须给x和y赋值,然后声明和初始化b。然后将 C 的值分配给 D。至少这是一种方法。

祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.