首页 > 解决方案 > 为什么向数组类型对象声明和赋值会抛出超出范围的错误?

问题描述

我已经定义了这个:

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

但它会引发错误:

指数数组的边界之外。

DT_OrderResponseOrderHeaderOperation是数组类型。

标签: c#asp.netc#-4.0

解决方案


您需要添加长度说明符来声明数组。长度说明符指示数组包含多少元素。请参阅:一维数组

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"])
    }
};

推荐阅读