<T>使用 For 循环访问 List<List> 时索引超出范围



业余爱好者在这里启动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访问数组的最后一项。

话虽如此,如果您声明dealDeals[dept].Count,稍后您尝试阅读以下内容:

Deals[dept][deal]

您超出了已定义的数组范围。

相关内容