开发者

How do I initialize a C# array with dimensions decided at runtime?

开发者 https://www.devze.com 2023-01-11 10:43 出处:网络
and thanks for looking. I have a 2D c# array, that has 50 as one of its dimensions. The other dimension depends on the number of rows in a database somewhere and is decided at runtime. How would I go

and thanks for looking.

I have a 2D c# array, that has 50 as one of its dimensions. The other dimension depends on the number of rows in a database somewhere and is decided at runtime. How would I go about initializing an array like this?

Currently my initialization for a single row looks like this, but I'm sure there's a better way to do it, more efficiently :)

temp = new Double[50,1] { {0},{0},{0},{0},{0},{0},{0},{0},{0},{0}开发者_C百科,{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}};


Simply initialize the array at runtime using an integer variable for the second dimension.

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

C# will automatically initialize all doubles to zero, so in your specific circumstance, you don't need to explicitly initialize the values.


As Toby said, you don't need to explicity set double values to zero since default(double) == 0.0.

However, if you want to initialize all members of an array to some value other than the default for the array's type, you could always do this:

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;
}

This would allow you to write code such as this:

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


If a second dim of array can vary use jagged array

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

When you will know exact size of array dim you set it with.

temp[index] = new double[length];

If it always has rectangular size use following construct

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


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

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

Take a look here for more information about arrays.

0

精彩评论

暂无评论...
验证码 换一张
取 消