C#打印List<Test>时输出类型名,如何正确打印列表对象?
C# 正确打印列表对象的解决方案
你看到的System.Collections.Generic.List1[Test]是List<T>默认ToString()方法的输出——List<T>没有重写该方法来展示内部元素;同时你的Test类如果未重写ToString`,直接打印单个对象也会输出类型名。以下是几种可行的解决方式:
方案1:给Test类重写ToString,再遍历打印
先给Test类重写ToString方法,自定义对象的输出格式:
public class Test { public int ID { get; set; } public int Points { get; set; } public override string ToString() { return $"Test(ID: {ID}, Points: {Points})"; } }
之后遍历列表逐个打印元素:
static void Main(string[] args) { List<Test> testList = GetTest(); foreach (var item in testList) { Console.WriteLine(item); } }
方案2:用string.Join一次性拼接输出
如果不想手动遍历,可通过string.Join把所有元素拼接成字符串后打印(同样需要Test类重写ToString):
static void Main(string[] args) { List<Test> testList = GetTest(); Console.WriteLine(string.Join(Environment.NewLine, testList)); }
方案3:不修改Test类,直接打印属性
如果无法修改Test类的代码,可在打印时直接访问对象属性拼接字符串:
static void Main(string[] args) { List<Test> testList = GetTest(); // 遍历打印 foreach (var item in testList) { Console.WriteLine($"ID: {item.ID}, Points: {item.Points}"); } // 或用LINQ+string.Join一次性打印 Console.WriteLine(string.Join(Environment.NewLine, testList.Select(t => $"ID: {t.ID}, Points: {t.Points}"))); }
注意事项
你原代码里存在变量名错误:Main方法中定义的变量是Test(建议改成小驼峰testList符合C#命名规范),但打印时写的是Newlist,这会导致编译错误,需要修正为对应变量名。
内容的提问来源于stack exchange,提问作者Oklol2958
相关产品推荐
相关产品推荐

