如何在 C# 中打印出 KeyValuePair 的信息
本文关键字:信息 KeyValuePair 打印 | 更新日期: 2023-09-27 18:32:39
我有一个KeyValuePair<K,T>
列表。我想打印T
的细节,但我不知道它的类型以便进行铸造。例如,存储在T
中的值可以是Student
、Person
、Movie
等,我想打印出信息。假设我有p as KeyValuePair
,我尝试做p.Value.ToString()
但它只会打印出类型。有什么办法可以做到这一点吗?
如果要在
调用方法时获得有意义的输出,则需要重写类型ToString
方法。
您可以在此处找到有关如何执行此操作的详细说明:
- 如何:重写 ToString 方法(C# 编程指南)
可以使用反射打印属性值: 如何使用反射递归打印对象属性的值
public void PrintProperties(object obj)
{
PrintProperties(obj, 0);
}
public void PrintProperties(object obj, int indent)
{
if (obj == null) return;
string indentString = new string(' ', indent);
Type objType = obj.GetType();
PropertyInfo[] properties = objType.GetProperties();
foreach (PropertyInfo property in properties)
{
object propValue = property.GetValue(obj, null);
if (property.PropertyType.Assembly == objType.Assembly)
{
Console.WriteLine("{0}{1}:", indentString, property.Name);
PrintProperties(propValue, indent + 2);
}
else
{
Console.WriteLine("{0}{1}: {2}", indentString, property.Name, propValue);
}
}
}
可以使用反射:C# 获取自己的类名
this.GetType().Name
Selman22的解决方案是,如果你想真正控制打印内容的输出 - 如果你可以控制所有对象的ToString,通常是一个更好的策略。