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

C#读取Pastebin随机行触发ArgumentOutOfRangeException异常解决方案咨询

解决方案

错误原因

  • 随机数参数使用不符合规则:Random.Next(min, max) 返回的随机数范围为 大于等于min,小于max,你当前代码中TEST列表仅添加了1个元素,TEST.Count = 1,调用Rand.Next(1, 1)不存在合法返回值;同时C#列表索引从0开始,你将索引下界设为1本身就不符合索引规则。
  • 业务逻辑错误:你直接将Pastebin返回的完整文本作为单个元素存入列表,没有按行拆分,列表永远只有1个元素,无法实现读取随机行的需求。

修复后代码

// 需提前引入System.Net、System.Linq命名空间
List<string> lineList = new List<string>();
Random rand = new Random();

// WebClient实现了IDisposable,用using包裹自动释放资源
using (WebClient wc = new WebClient())
{
    // 此处请替换为你自己的Pastebin raw格式链接,普通展示页链接下载的是HTML源码,无法直接拿到文本内容
    string fullContent = wc.DownloadString("你的Pastebin raw链接");
    // 按换行符拆分文本为行,自动过滤空行,不需要过滤可以删除StringSplitOptions.RemoveEmptyEntries参数
    lineList = fullContent.Split(new[] {'\r', '\n'}, StringSplitOptions.RemoveEmptyEntries).ToList();
}

// 访问列表前先判断是否有有效元素,避免空集合触发越界
if (lineList.Count > 0)
{
    // 随机数范围刚好匹配列表合法索引[0, lineList.Count -1]
    button1.Text = lineList[rand.Next(0, lineList.Count)];
}
else
{
    button1.Text = "未读取到有效行内容";
}

修复逻辑说明

  1. 索引适配:C#所有可索引的集合类索引均从0开始,最大合法索引为集合.Count - 1,rand.Next(0, lineList.Count)的返回值刚好覆盖全部合法索引,不会出现越界。
  2. 业务逻辑对齐:将读取到的完整文本按换行符拆分,每行作为一个单独元素存入列表,符合随机取行的需求。
  3. 边界处理:访问集合元素前先判断元素数量,兜底处理读取内容为空的场景,避免异常。

同类问题排查方法

  • 访问集合索引前,先确认索引值落在[0, 集合.Count -1]区间内,只要超出该区间必然触发越界异常
  • 用随机数取集合索引时,严格遵循Next(0, 集合.Count)的参数规则,不要自行调整上下界
  • 所有集合访问操作前优先做非空和元素数量判断,提前处理边界场景

内容的提问来源于stack exchange,提问作者ZeMeekGeek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:02