0

打印字典的最佳方法是什么,我创建了 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();

我希望它返回一个正确的字符串,其中包含对象的所有数据。我怎样才能做到这一点?

4

3 回答 3

7

代码示例:

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,遍历所有键/值,然后打印。

于 2013-06-05T17:25:30.693 回答
3

Currency 中的 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"以获得回车。

于 2013-06-05T17:30:28.950 回答
0

在某处制作打印逻辑。然后:

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

如果您要进行序列化以使事情变得更容易,请使您的类可序列化。正如问题评论中所说, Dictionary 类型不可序列化。我不记得它是否是密封的——如果不是,你可以创建一个可序列化的子类,尽管我宁愿序列化持有你的数据的类。

于 2013-06-05T17:20:39.203 回答