Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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},{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}};
like image 988
Freakishly Avatar asked Mar 16 '26 00:03

Freakishly


2 Answers

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.

like image 160
Toby Avatar answered Mar 18 '26 12:03

Toby


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);
like image 29
Dan Tao Avatar answered Mar 18 '26 13:03

Dan Tao



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!