0

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();

オブジェクトのすべてのデータを含む適切な文字列を返す必要があります。どうやってやるの?

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 に答える