使用List<Test>时如何打印列表中对象的Name与Address?
解决控制台打印Test对象属性的问题
嘿,看你代码里Console....这里没写完,应该是卡在怎么正确输出对象的Name和Address属性上了对吧?你的整体思路没问题,就是输出部分没处理对,直接打印对象实例的话,C#默认只会输出类的类型名称,而不是你要的属性值。
修正后的完整代码
using System; using System.Collections.Generic; public class Test { public string Name { set; get; } public string Address { set; get; } } class Program { static void Main(string[] args) { Test t = new Test(); t.Name = "bob"; t.Address = "CT"; List<Test> lst = new List<Test>(); lst.Add(t); foreach (var x in lst) { // 最简洁的字符串插值写法,直接输出属性值 Console.WriteLine($"姓名:{x.Name},地址:{x.Address}"); // 也可以用传统字符串拼接,效果一样 // Console.WriteLine("姓名:" + x.Name + ",地址:" + x.Address); } // 加这句让控制台窗口停留,方便看结果 Console.ReadLine(); } }
关键说明
- 在foreach循环里,
x是Test类的实例对象,必须通过x.Name、x.Address明确访问属性,不能直接打印x本身。 - 我用了C#的字符串插值(
$""语法),这是现在最常用的简洁写法,当然你也可以用传统的+拼接字符串,代码里注释了另一种可选写法。 - 最后加
Console.ReadLine()是为了避免控制台程序运行后直接关闭,能让你看清输出内容。
如果以后想直接打印对象就输出属性信息,还可以给Test类重写ToString()方法,这样代码会更优雅:
public class Test { public string Name { set; get; } public string Address { set; get; } // 重写ToString,自定义对象的打印内容 public override string ToString() { return $"姓名:{Name},地址:{Address}"; } }
这时候foreach里直接写Console.WriteLine(x);就能得到你想要的输出啦!
内容的提问来源于stack exchange,提问作者Koosh
相关产品推荐
相关产品推荐

