如何在 C# 中打印出 KeyValuePair 的信息

本文关键字:信息 KeyValuePair 打印 | 更新日期: 2023-09-27 18:32:39

我有一个KeyValuePair<K,T>列表。我想打印T的细节,但我不知道它的类型以便进行铸造。例如,存储在T中的值可以是StudentPersonMovie等,我想打印出信息。假设我有p as KeyValuePair,我尝试做p.Value.ToString()但它只会打印出类型。有什么办法可以做到这一点吗?

如何在 C# 中打印出 KeyValuePair<K,T> 的信息

如果要在

调用方法时获得有意义的输出,则需要重写类型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,通常是一个更好的策略。