打印字典的最佳方法是什么,我创建了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();
我希望它返回一个包含对象所有数据的正确字符串。我怎么能这样做?
答案 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...
}
如果您要进行序列化以简化操作,请使您的类可序列化。正如在问题的评论中所说,字典类型不可序列化。我不记得它是否已经密封 - 如果不是,你可以制作一个可序列化的子类,不过我更愿意序列化保存你的数据的类。