C#中如何通过foreach循环遍历对象字段并输出字段实际存储值
可以实现,只需做少量调整即可。
问题原因
你当前代码直接输出FieldInfo实例,该类的默认ToString()实现返回的是「字段类型+字段名称」,所以得到了你现在的输出结果。要获取字段存储的实际值,调用FieldInfo的GetValue()方法传入目标对象实例即可。
修改后完整代码
using System; using System.Reflection; // 必须引入该命名空间才能使用FieldInfo class Address { public string? Building; public string? Street=string.Empty; public string? City=string.Empty; public string? Region=string.Empty; } class Program { static void Main(string[] args) { Address address=new Address(); address.Building="C5"; address.Street=null; address.City="London"; address.Region="Camden"; foreach (FieldInfo field in address.GetType().GetFields()) { // 调用GetValue方法获取address实例上该字段的实际值 Console.WriteLine(field.GetValue(address)); } } }
运行输出
C5 London Camden
和你期望的结果完全一致,其中Street字段赋值为null,Console.WriteLine输出null时会自动打印空行。
内容的提问来源于stack exchange,提问作者Frank_
相关产品推荐
相关产品推荐

