Почему объявление и присвоение значений объекту типа массива выходит за пределы связанной ошибки? - PullRequest
0 голосов
/ 21 апреля 2020

Я определил это:

DT_OrderResponseOrderHeaderOperation[] HeaderOperation = new DT_OrderResponseOrderHeaderOperation[] { };
HeaderOperation[0].DAUNO = Convert.ToString(dr["Duration"]);
HeaderOperation[0].DAUNE = Convert.ToString(dr["DurationUnit"]);

Но выдает ошибку:

Индекс находился за пределами массива.

DT_OrderResponseOrderHeaderOperation имеет тип массив.

1 Ответ

1 голос
/ 21 апреля 2020

Вам нужно добавить спецификатор длины для объявления массива. Спецификатор длины указывает, сколько элементов содержится в вашем массиве. См .: Одномерные массивы

DT_OrderResponseOrderHeaderOperation[] HeaderOperation = new DT_OrderResponseOrderHeaderOperation[1];
HeaderOperation[0] = new DT_OrderResponseOrderHeaderOperation()
{
    DAUNO = Convert.ToString(dr["Duration"]),
    DAUNE = Convert.ToString(dr["DurationUnit"])
};

Или вы можете использовать эту Инициализация массива следующим образом. В этом случае указатель длины не нужен, поскольку он уже предоставлено количеством элементов в списке инициализации.

DT_OrderResponseOrderHeaderOperation[] HeaderOperation = new DT_OrderResponseOrderHeaderOperation[]
{
    new DT_OrderResponseOrderHeaderOperation()
    {
        DAUNO = Convert.ToString(dr["Duration"]),
        DAUNE = Convert.ToString(dr["DurationUnit"])
    }
};
...