如何打印Dictionary

本文关键字:string MyClass Dictionary 何打印 打印 | 更新日期: 2023-09-27 18:16:59

打印Dictionary的最佳方式是什么,我创建了Currency类,如下图

class Currency{
  public string currency_code { get; set; }
  public float unit { get; set; }
  public string currency_name { get; set; }
  public string currency_isim { get; set; }
  public float forex_buying { get; set; }
  public float forex_selling { get; set; }
  public float banknote_buying { get; set; }
  public float banknote_selling { get; set; }
}

是否有自动打印对象的方法?

我想打印出来如果可能的话

Dictionary<string, Currency> dict = new Dictionary<string, Currency>();
.....
.....
add data to dict properly
..... 
.....
dict.print();

我希望它返回一个合适的字符串,其中包括对象的所有数据。我怎么能做到呢?

如何打印Dictionary<string, MyClass>

代码示例:

public class Currency
{
  //... Add rest of class here
  public override string ToString()
  {
    return String.Format("Currency Code: {0}'nUnit:{1}...",...);
  }
}
foreach (string key in dict.Keys)
{
  Console.WriteLine("Key: {0}'nValue: {1}", key, dict[key].ToString());
}

重写ToString,遍历所有键/值,并打印

如何在货币中重写ToString(),从该类返回您需要的内容?您仍然需要将它与字典中的String键配对。

class Currency {
    public string currency_code { get; set; }
    public float unit { get; set; }
    public string currency_name { get; set; }
    public string currency_isim { get; set; }
    public float forex_buying { get; set; }
    public float forex_selling { get; set; }
    public float banknote_buying { get; set; }
    public float banknote_selling { get; set; }
    public override String ToString()
    {
        StringBuilder sb = new StringBuilder();
        sb.Append(currency_code + ", ");
        sb.Append(unit.ToString() + ", ");
        sb.Append(currency_name + ", ");
        sb.Append(currency_isim + ", ");
        sb.Append(forex_buying.ToString() + ", ");
        sb.Append(forex_selling.ToString() + ", ");
        sb.Append(banknote_buying.ToString() + ", ");
        sb.Append(banknote_selling.ToString());
        return sb.ToString();
    }
}

返回字符串的格式当然可以是您喜欢的任何方式。这里,它是一个逗号分隔的列表,但您可以轻松地将", "替换为"'n"以获得回车。

在某处设置打印逻辑。然后:

foreach (Currency c in dict.Values) {
    // c.Print(), or MyPrinterHandler.Print(c), or whatever...
}

如果你想通过序列化来使事情变得更容易,那就让你的类变得可序列化。正如在这个问题的评论中所说,Dictionary类型是不可序列化的。我不记得它是否密封了——如果不是,您可以创建一个可序列化的子类,不过我更愿意对保存数据的类进行序列化。