c# - 使用迭代显示对象c#中的字段内容
问题描述
我正在学习 C# 的基础知识并探索 foreach 循环的一些用途。我有一个 object address
,并试图遍历它以显示对象中各个字段的内容。下面是我在运行代码时得到的输出,然后是预期的输出。
我得到的输出是:
System.String Building
System.String Street
System.String City
System.String Region
预期输出:
C5
London
Camden
这是否可以以类似于下面的代码的方式进行?
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 str in address.GetType().GetFields())
{
Console.WriteLine($"{str}");
}
}
}
谢谢,弗兰克
解决方案
在派生类中重写时,返回给定对象支持的字段的值。
foreach (var info in address.GetType().GetFields())
Console.WriteLine($"{info.GetValue(address) ?? "Null"}");
输出
C5
Null // Added the null because... well ¯\_(ツ)_/¯
London
Camden
笔记
- 在执行这种类型的反射时,您应该熟悉一些绑定标志。
- 为了避免下一个问题,还有Type.GetProperties
- 只有在没有其他方法的情况下才应该使用反射,10 次中有 9 次可以在不需要调用反射方法的情况下解决问题,这在热路径、代码维护、链接和树抖动预构建优化中变得尤为重要
推荐阅读
- sql - MS SQL Server:填充具有相同列+计算滞后的空表列?
- ruby - Ruby rake 打印参数,但不喜欢它在 methodcallll 上的值
- ios - 集合视图单元格在与其他单元格之间更改显示顺序
- objective-c - 在 Objective-C 中使用带有可为空字符串值的 Swift 完成块
- haskell - Haskell,元组(双精度,字符串)
- php - 与 PHP 和 MySQL 的一对多关系中的分页
- excel - Excel 中的唯一值与具有公式的列不准确
- sql - 将 ****** 值 '******' 转换为数据类型 ****** 时转换失败
- android - 房间持久性:当字段具有嵌套类类型时出错
- c# - 使用 Xamarin MediaPlayer 从 Ftp 播放音频