私は少し複雑な辞書を持っています。C#:この特定の2D/3Dディクショナリを初期化して入力する最も簡単な方法は?
それは私がそれを使用したいときに、私はこのような何か2つの列挙型を保持している辞書&一覧>
<Dictionary<BiomeType, Dictionary<LocationType, List<string>>> myDictionary;
です:私が追加しようとすると
//Add "myString" to the List<string>
myDictionary[BiomeType.Jungle][LocationType.City1].Add("myString"));
を"myString"をmyListに渡すと、明らかなエラー&が発生する: "KeyNotFoundException:指定されたキーが辞書に存在しない"
キーがない場合は、自動的にディクショナリを追加する方法はありますか?私は多くのBiomeTypes &さらにLocationTypeを持っています。各リストを作成してから、それぞれのロケーションタイプの辞書を作成し、それをすべてのBiomeTypeに追加する必要があるのはPITAです。これらのすべては、この複雑な辞書を初期化するためだけに機能します。これを行う簡単な方法はありませんか?
私は辞書にオブジェクトを格納するために、gamedevのためにこれを使用していますので、私は
おそらくBiomeType playerCurrentBiomeType;
LocationType playerCurrentLocationType;
LoadLevel(myDictionary[playerCurrentBiomeType][playerCurrentLocationType]);
//ex. myDictionary[BiomeType.Jungle][LocationType.CapitalCity]
//ex. myDictionary[BiomeType.Desert][LocationType.CapitalCity]
//ex. myDictionary[BiomeType.Desert][LocationType.City3]
明らかに、誰もが単純にすべてを行ごとに追加するだけで、通常の方法で簡単に初期化できることを暗示しています。しかし、私が言及したように、それはリストの後にリストを作成する巨大なPITAであり、その後、それらのリストによって占められた新しい辞書を作成し、最後にこれらの辞書をもう1つの辞書に追加する。簡単な方法があるかどうかを確認するだけです。 – Carter81
私は、すべてを保持するために1つの辞書を使用することはできません。代わりに、各バイオームのための単一の辞書、またはそれらの行に沿ったものを作成することができます。しかし、BiomeType/LocationTypeを使用するだけで、単一のコンテナ内のすべてのオブジェクトを単純に取得するという考えが好きでした。よりシンプルに見えました。 – Carter81
C#は 'Dictionary'について何も知らないので、簡単な方法はありません。これを行うにはコードを書く必要があります。 –