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

Fre*_*hly 2 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}};
Run Code Online (Sandbox Code Playgroud)

Tob*_*oby 5

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

double[,] = new double[50, v];
Run Code Online (Sandbox Code Playgroud)

C#会自动初始化所​​有双打为零,所以在您的特定情况下,你并不需要显式初始化值.


Dan*_*Tao 5

正如托比所说,你不需要明确将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;
}
Run Code Online (Sandbox Code Playgroud)

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

double[,] temp = GetInitializedArray(50, 1, 0.0);
Run Code Online (Sandbox Code Playgroud)