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

解析两种格式CommandLine时出现数组越界问题如何解决?

问题修复方案

核心问题为代码直接硬编码访问Parameters[1],当命令只有1个参数时,Split(',')得到的数组长度为1,访问下标1自然触发数组越界异常。同时现有代码还存在冗余循环、缺少边界校验、输入容错性差的问题。

修复步骤

  • 移除无意义的外层for循环:循环体未使用循环变量i,完全是冗余逻辑,会重复执行相同的解析操作。
  • 增加前置边界校验:按空格拆分命令行后,先判断数组长度是否≥2,避免命令未携带参数时访问CommandLineText[1]引发越界。
  • 按参数数组长度动态取值:拆分逗号得到参数数组后,先判断长度再决定是否读取第二个参数。
  • 可选优化:将Int32.Parse替换为Int32.TryParse,避免参数不是合法数字时抛出格式异常。

修复后代码示例

// 拆分命令行,自动忽略多余空格
string[] commandLineText = CommandLine.Text.Split(' ', StringSplitOptions.RemoveEmptyEntries);
// 校验至少包含命令名和参数两部分
if (commandLineText.Length < 2)
{
    // 可自行添加无参数的错误处理逻辑
    return;
}

string command = commandLineText[0].ToLower().Trim();
string values = commandLineText[1];
// 拆分参数,自动忽略多余逗号
string[] parameters = values.Split(',', StringSplitOptions.RemoveEmptyEntries);

// 解析第一个参数
if (!Int32.TryParse(parameters[0], out int x))
{
    // 第一个参数不合法的错误处理
    return;
}

// 仅当存在第二个参数时解析Y,可自行设置Y的默认值
int y = 0;
if (parameters.Length >= 2)
{
    if (!Int32.TryParse(parameters[1], out y))
    {
        // 第二个参数不合法的错误处理
        return;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:54:02