2017-07-25 14 views
0

次のコードは、Formulaというクラスに移動し、数式の数値とラベルを生成します。数字は2つのデータ型で、ラベルは文字列なので、2つの別々の辞書に戻ります。異なるデータ型のディクショナリを使用するメソッド

Formula formula = new Formula(formula_type, primary_output, fat_values); 

Dictionary<string, double> numbers = formula.generateNumbers(); 
Dictionary<string, string> labels = formula.generateLabels(); 

私は、これらのDictionarysのいずれかを供給することができますが(下記のコードでは???を参照)メソッドシグネチャのデータタイプとして入れするかに立ち往生していメソッドを作成しようとしています。

private static void displayData(string text, Dictionary<string, ???> dict) 
{ 
    string words = "The " + text + " Dictionary contains the following:"; 
    Console.Out.WriteLine(words); 
    foreach (var pair in dict) 
    { 
    Console.Out.WriteLine(pair.Key + "=>" + pair.Value); 
    } 
    Console.Out.WriteLine(""); 
} 

これを行う簡単な方法はありますか?解決策が複雑な場合は、単純さが重要であるため、別のアプローチが望ましいでしょう。

+0

使用目的。 pair.Value.ToString()を使用します。 – jdweng

+0

'Dictionary >'キーごとにダブル&ストリングが必要な場合。 –

+1

メソッドを汎用化します。 'private static void displayData (文字列テキスト、辞書 dict)' –

答えて

4

使用generic method

private static void displayData<T>(string text, Dictionary<string, T> dict) 
{ 
    string words = "The " + text + " Dictionary contains the following:"; 
    Console.Out.WriteLine(words); 
    foreach (var pair in dict) 
    { 
    Console.Out.WriteLine(pair.Key + "=>" + pair.Value.ToString()); 
    } 
    Console.Out.WriteLine(""); 
} 

呼び出すには:???ため

displayData<string>("text",labels); 
+1

'displayData'メソッドを呼び出すときに' 'の部分は、' displayData( "text"、labels); 'で渡された変数から推論されるので、削除することができます。 – alexm

+0

ToStringを 'Value'にドロップすることもできます。' ToString'を暗黙的に 'ToString'を呼び出す' string'に連結するからです。 – juharr

+0

これは完全に機能します!また、.Valueの最後に.ToString()がなければ動作するようです。それを含める理由はありますか? – knot22

関連する問題