如何打印Dictionary <string,myclass =“”> </string,>

时间:2013-06-05 17:15:07

标签: c# winforms 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();

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

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分: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"以获得回车。

答案 2 :(得分:0)

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

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

如果您要进行序列化以简化操作,请使您的类可序列化。正如在问题的评论中所说,字典类型不可序列化。我不记得它是否已经密封 - 如果不是,你可以制作一个可序列化的子类,不过我更愿意序列化保存你的数据的类。