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

C#返回数组时出现“并非所有代码路径都返回值”错误求助

解决C#中“并非所有代码路径都返回值”错误及代码逻辑问题

问题拆解

  1. 返回值路径不完整:C#编译器要求所有代码分支必须明确返回值,哪怕循环理论上一定会执行,也需要在循环外补充默认返回逻辑。
  2. 数组未初始化:int[,] route = { }; 创建了空二维数组,直接访问route[i,j]会触发索引越界异常,必须先指定数组大小。
  3. 返回类型不匹配:你声明要返回数组,但函数定义是public int Route(...),需改为返回二维数组类型int[,]。
  4. 逻辑错误:else分支后的route[j, i] = ...会覆盖前面所有条件的赋值;循环内的return会让函数在第一次迭代就直接返回,无法完成整个数组的计算。

修正后的代码

[HttpGet]
[Route("api/J3/Distance/{city1}/{city2}/{city3}/{city4}")]
public int[,] Route(int city1, int city2, int city3, int city4)
{
    int[] city = { city1, city2, city3, city4 };
    // 初始化5x5的二维数组,匹配循环范围
    int[,] route = new int[5, 5];
    int i, j;
    
    for (i = 0; i < 5; i++)
    {
        for (j = 0; j < 5; j++)
        {
            if (i == j)
                route[i, j] = 0;
            else if (Math.Abs(i - j) == 1)
            {
                route[i, j] = city[i];
                route[j, i] = city[i];
            }
            else if (Math.Abs(i - j) == 2)
            {
                int sum = city[i] + city[i + 1];
                route[i, j] = sum;
                route[j, i] = sum;
            }
            else if (Math.Abs(i - j) == 3)
            {
                int sum = city[i] + city[i + 1] + city[i + 2];
                route[i, j] = sum;
                route[j, i] = sum;
            }
            else
            {
                int sum = city[i] + city[i + 1] + city[i + 2] + city[i + 3];
                route[i, j] = sum;
                route[j, i] = sum;
            }
        }
    }
    // 循环完成后返回完整数组
    return route;
}

额外注意

当i=4时,i+1会超出city数组的索引范围(city只有4个元素,索引0-3),需根据你的实际业务逻辑调整边界处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 20:51:15