You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:55:13