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

C#遍历List中字符串数组时修改元素,循环迭代异常求助

问题分析与修复方案

原代码核心问题

  1. 嵌套循环逻辑混乱:外层foreach和内层for循环嵌套,导致每次foreach迭代都会完整跑一遍整个for循环,直接跳到最后一个元素。
  2. 数组索引错误:minBlogg[i][i]会随着i的变化取数组不同位置的元素(比如i=1时取数组第1位,i=2时取第2位),但你每个帖子数组是固定3个元素(标题、内容、其他),应该用固定索引(比如[0]存标题)。
  3. continue使用错误:选"下一个帖子"时用continue,会直接跳过当前for循环剩余代码进入下一次迭代,结合外层循环,直接导致跳到最后一个元素。
  4. 返回主菜单逻辑失效:选3时只跳出switch,没有退出整个循环,程序会继续执行。

修复后的代码

void Redigera()
{
    // 用变量跟踪当前显示的帖子索引
    int currentIndex = 0;
    // 保持交互直到用户选择返回主菜单
    while (true)
    {
        // 检查索引是否越界(防止最后一个帖子选下一个)
        if (currentIndex >= minBlogg.Count)
        {
            Console.WriteLine("已经是最后一个帖子了!");
            Console.ReadKey();
            Console.Clear();
            currentIndex = minBlogg.Count - 1;
            continue;
        }

        string[] currentPost = minBlogg[currentIndex];
        Console.WriteLine("----------------------------");
        // 固定索引取标题(假设数组[0]是标题,[1]是内容)
        Console.WriteLine(currentPost[0]);
        Console.WriteLine("----------------------------");

        Console.WriteLine("[1]. Redigera");
        Console.WriteLine("[2]. Nästa inlägg");
        Console.WriteLine("[3]. Återgå till Huvudmeny");

        string val = Console.ReadLine();
        Console.Clear();

        switch (val)
        {
            case "1":
                Console.Write("Redigera titel: ");
                currentPost[0] = Console.ReadLine();
                Console.Write("Redigera inlägg: ");
                currentPost[1] = Console.ReadLine();
                Console.WriteLine("Ditt inlägg har sparats!");
                Console.ReadKey();
                Console.Clear();
                break;

            case "2":
                // 移动到下一个帖子,只需索引+1
                currentIndex++;
                break;

            case "3":
                // 直接退出循环,返回主菜单
                return;

            default:
                Console.WriteLine("Ogiltigt val! Tryck på en tangent för att fortsätta...");
                Console.ReadKey();
                Console.Clear();
                break;
        }
    }
}

修复要点说明

  • 用单个while循环控制交互流程,通过currentIndex跟踪当前帖子,逻辑更清晰。
  • 固定数组索引(currentPost[0]标题、currentPost[1]内容),避免索引错误。
  • 处理"下一个帖子"时直接currentIndex++,并添加越界检查,防止索引超出范围。
  • 选3时用return直接退出方法,回到主菜单。
  • 添加默认选项的提示,提升用户体验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:12:56