2つの異なるデータ型の値を持つキーと値のペアを作成するにはどうすればよいですか?

user3726459

を返すメソッドを書きました

List<KeyValuePair<CommandType, List<string>>>

CommandType タイプです enum

public enum CommandType
{
    Programmed,
    Manual
}

私の問題は、の値がであるKeyValuePair場合もenumあれば、文字列のリストである場合もありますが、すべてKeyValuePairを1つのリストに保持する必要があります。

現在、keyvaluepairのオブジェクトとして値を渡し、メソッドがリストを返し、キーに基づいてリストを反復処理するときに、値を元のタイプにキャストし直します。

これを実装するためのより良い方法はありますか?

これがサンプルコードです

public enum  ProgrammedCommands
{
    Sntp,
    Snmp,
}
private List<KeyValuePair<CommandType, object>> GetCommandsFromTemplate(string[] templateLines)
{
    var list = new List<KeyValuePair<CommandType, object>>();

    if (templateLines != null)
        for (int lineIndex = 0; lineIndex < templateLines.Length; lineIndex++)
        {
            if (templateLines[lineIndex].Contains("!*") && templateLines[lineIndex].Contains("*!"))
            {
                KeyValuePair<CommandType, object> ProgrammedSetting;
                List<string> programmedCommandList;
                if (templateLines[lineIndex].Contains("SNTP - SNTP Server Commands"))
                {

                    ProgrammedSetting = new KeyValuePair<CommandType, object>(CommandType.Programmed, ProgrammedCommands.Sntp);
                    list.Add(ProgrammedSetting);
                }

                else if (templateLines[lineIndex].Contains("MANUAL"))
                {
                    lineIndex++;
                    List<string> manual = new List<string>();
                    while (true)
                    {
                        if (lineIndex >= templateLines.Length)
                            break;
                        if (templateLines[lineIndex].Contains("!!["))
                            lineIndex++;
                        else if (templateLines[lineIndex].Contains("]!!"))
                            break;
                        else
                        {
                            manual.Add(templateLines[lineIndex]);
                            lineIndex++;
                        }
                    }
                    ProgrammedSetting = new KeyValuePair<CommandType, object>(CommandType.Manual, manual);
                    list.Add(ProgrammedSetting);
                }
            }
        }
    return list;
}
Reza Aghaei

異なるタイプに単一のストレージを使用する場合、値のタイプは実行時にのみ決定できるobjectため、ボックス化値にタイプを使用する必要があります。次に、タイプされた方法で値を操作する必要がある場合は、そのタイプについては、希望のタイプに箱から出して使用します。

したがって、要件に基づいて次のデータ構造の1つを使用できます。

  • Dictionary<CommandType, object> ←キーは一意である必要があります。
  • List<KeyValuePair<CommandType, object>> ←ペアのキーは一意である必要はありません。

注:あなたはおそらく、共通の基本クラスを作成するようなソリューションを想像することができBaseType、異なる2導き出すListContainerEnumContainerからBaseTypeと作成ListContainerし、EnumContainer中にランタイムや店ではDictionary<CommandType, BaseType>このような構造は、オブジェクトを使用するのではなく、ストレージを目的のタイプに制限するのに役立つ可能性があります。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonでサイズの異なる2つのデータフレームの値のペアを比較するにはどうすればよいですか?

分類Dev

データ型が異なる場合、SQLの2つの値を特定の小数精度と比較するにはどうすればよいですか?

分類Dev

Pythonで、各アイテムが異なる個別のキー値ペアを持つオブジェクト/ディクテーションのリストで最小のキー値ペアを取得するにはどうすればよいですか?

分類Dev

同じキーと値のペアを持つ2つの配列を追加するにはどうすればよいですか?

分類Dev

2つのキーと1つの値でdictを作成するにはどうすればよいですか?

分類Dev

キーは異なるがphpで同じ値を持つ2つの多次元配列の違いを取得するにはどうすればよいですか?

分類Dev

Sparkストリーミングで最小の値を持つキーと値のペアを見つけるにはどうすればよいですか?

分類Dev

2つの異なる値を取り、Pythonでキーを生成する1つの関数を作成するにはどうすればよいですか?

分類Dev

1つの単語を除いて完全に異なる値を持つ2つのデータフレームを照合してマージするにはどうすればよいですか?10行のABCと22550行のXYZがあります

分類Dev

重複する値を持つデータフレーム列の値と異なる値を持つ他の値をマージするにはどうすればよいですか?

分類Dev

繰り返しキーと異なる値を持つ辞書のリストから要素を除外するにはどうすればよいですか?

分類Dev

2つの異なる構造を持つファイル2データセットにエクスポートするときに、欠落している値の空白を取り除くにはどうすればよいですか?

分類Dev

異なる属性を持つXMLタグの値を取得するにはどうすればよいですか?

分類Dev

パンダのデータフレームのリストを値として持つ辞書を作成するにはどうすればよいですか?

分類Dev

Python-1つのキーと2つの値を持つループで辞書を更新するにはどうすればよいですか?

分類Dev

キーと値のペアの数が異なるオブジェクトのタイプを追加するにはどうすればよいですか?

分類Dev

1つのX値ごとに2つの列を持つC#チャートを作成するにはどうすればよいですか?

分類Dev

複数のキーと値のペアのdictの2つのリストを比較するにはどうすればよいですか?

分類Dev

2つのグラフのツールチップにキーと値のペアを表示するにはどうすればよいですか?

分類Dev

2つの辞書を複数のキーと値のペアでマージするにはどうすればよいですか?

分類Dev

定数のキーと値を2つの異なる列に保存するにはどうすればよいですか?

分類Dev

キー/値のペアオブジェクトを持つ配列から値を取得するにはどうすればよいですか?

分類Dev

2つの異なるパンダデータフレームで値を相互に比較するにはどうすればよいですか

分類Dev

同じキーを持つ異なるハッシュマップの値の合計を計算するにはどうすればよいですか?

分類Dev

1つの単語を除いて完全に異なる値を持つ2つのデータフレームを照合してマージするにはどうすればよいですか?

分類Dev

異なる参照を持つ2つの配列を作成するにはどうすればよいですか?

分類Dev

Rails 3.2アプリでキーが異なる2つのモデルから配列を作成するにはどうすればよいですか?

分類Dev

2つの値を持つユーザーIDを取得するにはどうすればよいですか?

分類Dev

Haskellで、2つの異なるタイプのJSON値をデコードするにはどうすればよいですか?

Related 関連記事

  1. 1

    Pythonでサイズの異なる2つのデータフレームの値のペアを比較するにはどうすればよいですか?

  2. 2

    データ型が異なる場合、SQLの2つの値を特定の小数精度と比較するにはどうすればよいですか?

  3. 3

    Pythonで、各アイテムが異なる個別のキー値ペアを持つオブジェクト/ディクテーションのリストで最小のキー値ペアを取得するにはどうすればよいですか?

  4. 4

    同じキーと値のペアを持つ2つの配列を追加するにはどうすればよいですか?

  5. 5

    2つのキーと1つの値でdictを作成するにはどうすればよいですか?

  6. 6

    キーは異なるがphpで同じ値を持つ2つの多次元配列の違いを取得するにはどうすればよいですか?

  7. 7

    Sparkストリーミングで最小の値を持つキーと値のペアを見つけるにはどうすればよいですか?

  8. 8

    2つの異なる値を取り、Pythonでキーを生成する1つの関数を作成するにはどうすればよいですか?

  9. 9

    1つの単語を除いて完全に異なる値を持つ2つのデータフレームを照合してマージするにはどうすればよいですか?10行のABCと22550行のXYZがあります

  10. 10

    重複する値を持つデータフレーム列の値と異なる値を持つ他の値をマージするにはどうすればよいですか?

  11. 11

    繰り返しキーと異なる値を持つ辞書のリストから要素を除外するにはどうすればよいですか?

  12. 12

    2つの異なる構造を持つファイル2データセットにエクスポートするときに、欠落している値の空白を取り除くにはどうすればよいですか?

  13. 13

    異なる属性を持つXMLタグの値を取得するにはどうすればよいですか?

  14. 14

    パンダのデータフレームのリストを値として持つ辞書を作成するにはどうすればよいですか?

  15. 15

    Python-1つのキーと2つの値を持つループで辞書を更新するにはどうすればよいですか?

  16. 16

    キーと値のペアの数が異なるオブジェクトのタイプを追加するにはどうすればよいですか?

  17. 17

    1つのX値ごとに2つの列を持つC#チャートを作成するにはどうすればよいですか?

  18. 18

    複数のキーと値のペアのdictの2つのリストを比較するにはどうすればよいですか?

  19. 19

    2つのグラフのツールチップにキーと値のペアを表示するにはどうすればよいですか?

  20. 20

    2つの辞書を複数のキーと値のペアでマージするにはどうすればよいですか?

  21. 21

    定数のキーと値を2つの異なる列に保存するにはどうすればよいですか?

  22. 22

    キー/値のペアオブジェクトを持つ配列から値を取得するにはどうすればよいですか?

  23. 23

    2つの異なるパンダデータフレームで値を相互に比較するにはどうすればよいですか

  24. 24

    同じキーを持つ異なるハッシュマップの値の合計を計算するにはどうすればよいですか?

  25. 25

    1つの単語を除いて完全に異なる値を持つ2つのデータフレームを照合してマージするにはどうすればよいですか?

  26. 26

    異なる参照を持つ2つの配列を作成するにはどうすればよいですか?

  27. 27

    Rails 3.2アプリでキーが異なる2つのモデルから配列を作成するにはどうすればよいですか?

  28. 28

    2つの値を持つユーザーIDを取得するにはどうすればよいですか?

  29. 29

    Haskellで、2つの異なるタイプのJSON値をデコードするにはどうすればよいですか?

ホットタグ

アーカイブ