C# 如何填充巨大的二维阵列
我目前正在尝试用C#制作柏林噪声发生器,我需要一个巨大的2D阵列来使用 这是我当前的解决方案,但对于更大的阵列,我无法做到这一点C# 如何填充巨大的二维阵列,c#,arrays,multidimensional-array,perlin-noise,C#,Arrays,Multidimensional Array,Perlin Noise,我目前正在尝试用C#制作柏林噪声发生器,我需要一个巨大的2D阵列来使用 这是我当前的解决方案,但对于更大的阵列,我无法做到这一点 int[,] noise = new int[8, 8]{ {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0,0,0,0,0,0}, {0,0,0
int[,] noise = new int[8, 8]{
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0}
};
您可以编写一个函数来填充数组。 GetLength(dimension number)返回C#中多维数组的维度大小。二维尺寸标注的行数为0,列数为1。因此,编写如下函数:
public static void fill2DArray(int[,] arr){
int numRows = arr.GetLength(0);
int numCols = arr.GetLength(1);
for(int i = 0; i < numRows; ++i){
for(int j = 0; j < numCols; ++j){
arr[i,j] = 0;
}
}
}
publicstaticvoidfill2darray(int[,]arr){
int numRows=arr.GetLength(0);
int numCols=arr.GetLength(1);
对于(int i=0;i
尝试调用函数,如
fill2DArray(myArray)代码>。您也可以使用内的Random
填充随机数据。循环并填充它们。您可以参考此答案。当数组已经是默认值时,为什么需要用零填充它?或者您正在询问其他一些值?为了扩展Alexei的注释,在C#中,数组将使用默认值(T)初始化,对于数值类型,默认值为0,对于类为null,等等。当您完成时,我假设您的数组不会完全为零(正如其他人指出的,您可以免费获得该值)。如果你的数组真的很大,几乎都是零(但是有一些非零元素),考虑编写一个稀疏数组类,在这里你只跟踪非零元素。最简单的实现是将非零元素存储在字典中
,其中键类型为两个int(x和y)的值元组,值与数组类型匹配。我认为您可以编写一个2D索引属性,这样就可以使它看起来像2D arrayCode无效一样。复制粘贴前请务必检查来源(如)。我错误地键入了[I][j]而不是[I,j]。我已经解决了这个问题,它正在工作,我已经尝试填充一个数组,在参数中传递值。