如何使用运行时确定的维度初始化C#数组?

时间:2010-08-15 19:11:49

标签: c# multidimensional-array

感谢您的光临。

我有一个2D c#数组,它有50个作为其维度之一。另一个维度取决于某个数据库中的行数,并在运行时决定。我将如何初始化这样的数组呢?

目前我对单行的初始化看起来像这样,但我确信有更好的方法可以更高效地完成它:)

temp = new Double[50,1] { {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}};

4 个答案:

答案 0 :(得分:5)

只需在运行时使用第二维的整数变量初始化数组。

double[,] = new double[50, v];

C#会自动将所有双打初始化为零,因此在您的特定情况下,您无需显式初始化值。

答案 1 :(得分:5)

作为Toby said,您无需明确将double值设置为零,因为default(double) == 0.0

但是,如果要将数组的所有成员初始化为除数组类型的默认值以外的某个值,则可以始终执行此操作:

static T[,] GetInitializedArray<T>(int width, int height, T value)
{
    var array = new T[width, height];
    for (int x = 0; x < width; ++x)
    {
        for (int y = 0; y < height; ++y)
        {
            array[x, y] = value;
        }
    }

    return array;
}

这将允许您编写如下代码:

double[,] temp = GetInitializedArray(50, 1, 0.0);

答案 2 :(得分:1)

double[,] temp = new double[50,1];

double[][] temp = new double[50][];

有关数组的更多信息,请查看here

答案 3 :(得分:1)

如果数组的第二个暗淡可以改变使用jagged array

double [][] temp = new double [50][]; 

当您知道数组暗淡的确切大小时,请使用。

temp[index] = new double[length];

如果它总是有矩形大小,请使用以下构造

double [,] temp = new double[50, length];