Winform调用API获取作者列表时遇索引越界错误求助
解决Winform中访问作者集合时的索引越界错误
错误原因
Index was out of range错误明确表示你使用的索引this.cmp超出了Program.ouvrage.Auteur集合的有效范围——集合的有效索引是从0到Count-1,要么cmp是负数,要么它的值大于等于集合的元素总数。
排查与解决步骤
先确认集合状态与索引值
在出错代码前添加调试输出,明确两者的数值关系:System.Diagnostics.Debug.WriteLine($"Auteur集合元素数量: {Program.ouvrage.Auteur.Count}"); System.Diagnostics.Debug.WriteLine($"当前cmp值: {this.cmp}");运行程序后查看输出窗口,就能直接看到
cmp是否在有效范围内。检查
cmp的赋值逻辑
追踪cmp的赋值、递增/递减代码,确保它的取值始终满足0 <= cmp < Program.ouvrage.Auteur.Count。比如做上一页/下一页切换时,要先判断边界再修改cmp:// 下一页示例 if (this.cmp < Program.ouvrage.Auteur.Count - 1) { this.cmp++; textBox3.Text = Program.ouvrage.Auteur[this.cmp]; }使用安全的集合访问方式
直接添加边界判断,避免索引越界:if (Program.ouvrage.Auteur != null && this.cmp >= 0 && this.cmp < Program.ouvrage.Auteur.Count) { textBox3.Text = Program.ouvrage.Auteur[this.cmp]; } else { textBox3.Text = string.Empty; // 或提示"无作者信息" }也可以用LINQ的
ElementAtOrDefault简化代码(需引用System.Linq):textBox3.Text = Program.ouvrage.Auteur?.ElementAtOrDefault(this.cmp) ?? string.Empty;确认集合已正确初始化
检查Program.ouvrage.Auteur是否已被初始化(比如是否为null,或者是否已经添加了作者数据)。如果是未初始化的空集合,要先完成初始化:// 确保集合已初始化示例 if (Program.ouvrage.Auteur == null) { Program.ouvrage.Auteur = new List<string>(); // 假设Auteur是List<string>类型 }
内容的提问来源于stack exchange,提问作者Omar Benzakour
相关产品推荐
相关产品推荐

