c# - 为什么向数组类型对象声明和赋值会抛出超出范围的错误?
问题描述
我已经定义了这个:
DT_OrderResponseOrderHeaderOperation[] HeaderOperation = new DT_OrderResponseOrderHeaderOperation[] { };
HeaderOperation[0].DAUNO = Convert.ToString(dr["Duration"]);
HeaderOperation[0].DAUNE = Convert.ToString(dr["DurationUnit"]);
但它会引发错误:
指数数组的边界之外。
DT_OrderResponseOrderHeaderOperation
是数组类型。
解决方案
您需要添加长度说明符来声明数组。长度说明符指示数组包含多少元素。请参阅:一维数组
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"])
}
};
推荐阅读
- java - 使用 Scanner 从文件读取时出现 InputMismatchException
- reactjs - 元素类型无效:使用 react-bootstrap 时需要一个字符串(用于内置组件)
- html - 外部文件中的多个 SVG - 如何在 img 标签中指定哪一个?
- plugins - 在 fluentd stdout 输出插件中禁用时间和标签
- php - session_start(); 导致 500 内部错误
- javascript - 如何更改画布上背景的旋转中心?
- sublimetext3 - 为什么 Coq 不能识别已编译的库?
- c++ - C++ std::tm 从 std::chrono::time_point 转换后返回错误值
- html - Safari iOS Mobile 上的不同图像大小
- css - CSS:颜色在悬停时淡入,但是当鼠标移开时我不能让它消失