Как инициализировать массив C # с размерами, определенными во время выполнения? - PullRequest
2 голосов
/ 15 августа 2010

и спасибо за поиск.

У меня есть 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 ]

5 голосов
/ 15 августа 2010

Как сказал Тоби , вам необязательно, чтобы значение 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);
5 голосов
/ 15 августа 2010

Просто инициализируйте массив во время выполнения, используя целочисленную переменную для второго измерения.

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

C # автоматически инициализирует все значения типа double до нуля, поэтому в ваших конкретных обстоятельствах вам не нужно явно инициализироватьзначения.

1 голос
/ 15 августа 2010

Если второй размер массива может варьироваться, используйте неровный массив

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

Когда вы узнаете точный размер массива dim, вы установите его с помощью.

temp[index] = new double[length];

Если он всегда имеет прямоугольный размер, используйте следующую конструкцию

double [,] temp = new double[50, length];
1 голос
/ 15 августа 2010
double[,] temp = new double[50,1];

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

Посмотрите здесь для получения дополнительной информации о массивах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...