我有一个类型为 string
的二维数组,我想在某个循环中对其进行修改和调整大小。我的主要目标是通过创建一个二维数组来使用最少的内存,该数组将在循环的每次迭代中进行修改,并将一个字符添加到该数组中的适当单元格中。这是我的代码:
static void Main(string[] args)
{
int maxBound = 100;//length of freq array
Random rnd1 = new Random();
int numLoops = rnd1.Next(1000, 1200);//number of total elements in freq array
int[] freq = new int[maxBound];//freq array
string[,] _2dim = new string[maxBound, numLoops];//rows,columns
Random rnd2 = new Random();
for (int i = 0; i < numLoops; i++)
{
int s = rnd2.Next(maxBound);
freq[s]++;
//Here I try to add `*` to the _2dim array while resizing it to the appropriate size
}
}
解决方案的主要方法是什么?谢谢
最佳答案
您可能想要使用锯齿状数组而不是二维数组。简而言之,二维数组始终是一个 N x M 矩阵,您无法调整其大小,而锯齿状数组是一个数组数组,您可以在其中将每个内部元素分别初始化为不同的大小(请参阅详细信息中的差异 here)
int maxBound = 100;
Random rnd = new Random();
int numLoops = rnd.Next(1000, 1200);
string[][] jagged = new string[numLoops][];
for (int i = 0; i < numLoops; i++)
{
int currLen = rnd.Next(maxBound);
jagged[i] = new string[currLen];
for (int j = 0; j < currLen; j++)
jagged[i][j] = "*"; // do some initialization
}
关于c# - 调整和初始化二维数组 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41320486/