J'ai un peu un dictionnaire complexe.C#: moyen le plus simple d'initialiser et de remplir ce dictionnaire 2D/3D particulier?
Il est un dictionnaire qui contient deux types énumérés & une liste <>
Dictionary<BiomeType, Dictionary<LocationType, List<string>>> myDictionary;
Alors, quand je veux l'utiliser, je fais quelque chose comme ceci:
//Add "myString" to the List<string>
myDictionary[BiomeType.Jungle][LocationType.City1].Add("myString"));
Lorsque je tente d'ajouter "myString" à myList, il jette une erreur prévisible évidente &: "KeyNotFoundException: La clé donnée n'était pas présente dans le dictionnaire."
Est-il possible en C# d'avoir automatiquement le dictionnaire pour ajouter la clé si elle n'y est pas déjà? J'ai beaucoup de BiomeTypes & encore plus de LocationTypes. Ce serait un PITA de créer chaque liste, puis de créer chaque dictionnaire de type emplacement, puis de l'ajouter pour chaque BiomeType. Tout cela fonctionne juste pour initialiser ce dictionnaire complexe. N'y a-t-il pas un moyen facile de faire cela?
J'utilise cela pour gamedev, pour stocker des objets dans un dictionnaire, donc je peux y accéder en faisant quelque chose comme
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]
Il est évident que tout le monde pourrait facilement initialiser le dictionnaire de la manière normale en ajoutant tout simplement ligne par ligne. Cependant, comme je l'ai mentionné, c'est une énorme liste PITA qui crée une liste après la liste, puis crée de nouveaux dictionnaires peuplés par ces listes, puis finalement ajoute ces dictionnaires à l'autre dictionnaire. Juste vérifier s'il y a un moyen plus facile. – Carter81
Je sais aussi que je ne pourrais tout simplement pas utiliser un seul dictionnaire pour tout conserver, et créer plutôt un seul dictionnaire pour chaque biome, ou quelque chose du genre. Cependant, j'ai aimé l'idée de simplement saisir tous les objets dans un seul conteneur en utilisant simplement BiomeType/LocationType. Semblait plus simple. – Carter81
C# ne sait rien sur 'Dictionary', donc il n'y a pas de moyen plus simple. Vous devrez écrire du code pour le faire. –