如何将通过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
相关产品推荐
相关产品推荐

