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

C#:while循环向List存字符串后打印异常问题求助

问题排查与解决方案

核心问题分析

  1. 背包内容打印错误:直接拼接backpackContent与字符串时,List的默认ToString()方法返回的是类型全称(即System.Collections.Generic.List1[System.String]`),而非列表内的实际元素。
  2. 空背包判断逻辑失效:case 2中错误判断menuSelection == "",此时用户已选择选项2,menuSelection的值为"2",永远不会触发空背包提示,应改为判断背包列表是否为空。
  3. 清空背包功能未实现:case 3仅输出提示文字,未执行实际的清空操作。

修复后的完整代码

using System;
using System.Collections.Generic;

namespace backpack_stackoverflow
{
    internal class Program
    {
        static void Main(string[] args)
        {
            bool controllBool = true;
            List<string> backpackContent = new List<string>();

            while (controllBool)
            {
                Console.WriteLine("Welcome to the backpack.");
                Console.WriteLine("[1] Add an item to backpack");
                Console.WriteLine("[2] Print backpack content");
                Console.WriteLine("[3] Clear backpack content");
                Console.WriteLine("[4] Exit");

                string menuSelection = Console.ReadLine();

                switch (menuSelection)
                {
                    case "1":
                        Console.WriteLine("Add something to the backpack: ");
                        string addedItem = Console.ReadLine();
                        backpackContent.Add(addedItem);
                        Console.WriteLine($"You have added a {addedItem} to the backpack!");
                        break;

                    case "2":
                        if (backpackContent.Count == 0)
                        {
                            Console.WriteLine("The backpack is empty. Add something by pressing menu selection 1.");
                        }
                        else
                        {
                            string items = string.Join(", ", backpackContent);
                            Console.WriteLine($"The backpack contains: {items}.");
                        }
                        break;

                    case "3":
                        backpackContent.Clear();
                        Console.WriteLine("You have cleared the backpack! Add something by pressing menu selection 1.");
                        break;

                    case "4":
                        controllBool = false;
                        break;

                    default:
                        Console.WriteLine("It seems you have made an invalid selection. Please make a selection between 1-4.");
                        break;
                }
            }
        }
    }
}

关键修改说明

  • 打印逻辑优化:使用string.Join(", ", backpackContent)将列表元素用逗号分隔拼接成可读字符串,替代直接拼接List对象。
  • 空判断修正:将case 2中的判断条件改为backpackContent.Count == 0,正确检测背包是否为空。
  • 清空功能补全:在case 3中添加backpackContent.Clear(),实际执行清空背包的操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:17:55