业余爱好者在这里启动C#编码器。认为我在这里缺少一些基本的东西。我正在尝试通过使用两个 for 循环解析一个列表来创建一个新列表>。我正在获取索引超出范围,尽管从我在调试中可以看出,正在访问的 [index][index] 位置的 Deal 对象中有数据。
List<List<Deal>> Deals = await Database.LoadRecordsAsync(form, depts);
for (int dept = 0; dept <= Deals.Count; dept++)
{
List<Deal> batch = new List<Deal>();
for (int deal = Deals[dept].Count; deal >= 0; deal--)
{
batch.Add(Deals[dept][deal]); // Error here
}
}
调试中的交易具有预期的索引和预期的数据。我初始化的内容不正确吗?
问题是以下行:
deal = Deals[dept].Count
此行应更改如下:
deal = Deals[dept].Count - 1
以及第一个 for 的上限。以下
dept <= Deals.Count
应更改如下:
dept < Deals.Count
一般来说,如果声明一个包含 n 个项的数组,则可以使用索引n-1
访问数组的最后一项。
话虽如此,如果您声明deal
为 Deals[dept].Count
,稍后您尝试阅读以下内容:
Deals[dept][deal]
您超出了已定义的数组范围。