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

C#列表仅添加最新元素问题求助:代码调试与修复

问题分析与解决

核心问题

你的代码里List<string> computerName = new List<string>();是在while(true)循环内部声明的,每次循环都会创建一个全新的空列表,之前输入的元素根本没机会被保留,所以每次只能看到最新的元素。

额外逻辑问题

  1. 输入"list"时,你先把"list"添加到了列表里再执行遍历,这会导致输出里多一个无关的"list",不符合需求
  2. else分支里重复添加了元素:前面已经执行computerName.Add(cName);,后面又加computerName.Add(cName.ToLower());,会导致同一个厂商被存两次(一次原格式一次小写)

修正后的代码

namespace computerDatabase
{
    class program
    {
        static void Main()
        {
            // 把列表声明移到循环外面,全程用同一个列表存储数据
            List<string> computerName = new List<string>();

            while (true)
            {
                Console.Write("Who is your computer manufacturer: ");
                string cName = Console.ReadLine();
                
                if (cName == "list")
                {
                    // 输入list时直接遍历已有元素,不把list本身加入列表
                    foreach(string s in computerName)
                    {
                        Console.WriteLine(s);
                    }
                }
                else
                {
                    // 只添加一次,按需选择是否转小写
                    computerName.Add(cName.ToLower());
                    // 如果要保留原输入格式,替换成computerName.Add(cName);即可
                }
            }
        }
    }
}

关键修改说明

  • 将List<string>的初始化移到while循环外部,确保所有输入的元素都存在同一个列表中
  • 调整判断逻辑:输入"list"时不再向列表添加内容,直接遍历输出已有厂商
  • 移除重复的元素添加操作,避免同一厂商被重复存储

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:55:20