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

如何将通过Console.ReadLine()获取的字符串添加至List集合?

修正方案与问题解析

你的代码存在几个可以优化的点,同时有编译层面的隐患,下面是修正后的代码以及问题说明:

问题点说明

  • 泛型方法Resize<T>的第二个参数是固定string类型,但List<T>.Add要求传入T类型参数,一旦你使用非string类型的List,这段代码会直接编译失败。
  • 不需要给List<T>参数加ref关键字:List是引用类型,方法内对集合的修改(比如Add元素)会直接作用于原集合,ref仅用于需要重新给变量赋值新引用的场景(比如array = new List<T>()),这里完全没必要。
  • 方法名Resize不符合实际功能:List本身会自动扩容,这个方法实际是添加元素并打印集合内容,改名更清晰。

修正后的代码(针对string类型List)

如果你的场景只需要处理List<string>,可以直接去掉泛型,简化代码:

static void AddAndPrintList(List<string> list, string item)
{
    list.Add(item);
    Console.WriteLine();
    foreach (var element in list)
    {
        Console.WriteLine(element);
    }
}

static void Main(string[] args)
{
    List<string> teachers = new List<string> { "1", "2", "3" };
    Console.WriteLine("Enter a name");
    string userInput = Console.ReadLine();
    AddAndPrintList(teachers, userInput);
}

通用泛型版本(支持任意类型List)

如果需要支持不同类型的List,要保证传入的item类型和List的泛型类型一致:

static void AddAndPrintList<T>(List<T> list, T item)
{
    list.Add(item);
    Console.WriteLine();
    foreach (var element in list)
    {
        Console.WriteLine(element);
    }
}

static void Main(string[] args)
{
    List<string> teachers = new List<string> { "1", "2", "3" };
    Console.WriteLine("Enter a name");
    string userInput = Console.ReadLine();
    AddAndPrintList(teachers, userInput);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:00:54