Equivalent Java Map en C #

J’essaie de tenir une liste d’éléments dans une collection avec une clé de mon choix. En Java, je voudrais simplement utiliser Map comme suit:

class Test { Map entities; public Ssortingng getEntity(Integer code) { return this.entities.get(code); } } 

Y a-t-il une manière équivalente de le faire en C #? System.Collections.Generic.Hashset n’utilise pas le hachage et je ne peux pas définir une clé de type personnalisée System.Collections.Hashtable n’est pas une classe générique
System.Collections.Generic.Dictionary n’a pas de méthode get(Key)

Vous pouvez indexer Dictionnaire, vous n’avez pas besoin de “obtenir”.

 Dictionary example = new Dictionary(); ... example.Add("hello","world"); ... Console.Writeline(example["hello"]); 

TryGetValue (merci à Earwicker) est un moyen efficace de tester / obtenir des valeurs:

 if (otherExample.TryGetValue("key", out value)) { otherExample["key"] = value + 1; } 

Avec cette méthode, vous pouvez accélérer et récupérer des valeurs sans exception (si elles sont présentes).

Ressources:

Dictionnaire-clés

Essayez d’obtenir une valeur

Dictionary <,> est l’équivalent. Bien qu’il ne possède pas de méthode Get (…), il possède une propriété indexée appelée Item que vous pouvez accéder directement en C # en utilisant la notation d’index:

 class Test { Dictionary entities; public Ssortingng getEntity(int code) { return this.entities[code]; } } 

Si vous voulez utiliser un type de clé personnalisé, vous devriez envisager d’implémenter IEquatable <> et de remplacer Equals (objet) et GetHashCode (), à moins que l’égalité (référence ou struct) par défaut soit suffisante pour déterminer l’égalité des clés. Vous devez également rendre votre type de clé immuable pour éviter que des choses étranges ne se produisent si une clé est mutée après son insertion dans un dictionnaire (par exemple parce que la mutation a entraîné la modification de son code de hachage).

 class Test { Dictionary entities; public ssortingng GetEntity(int code) { // java's get method returns null when the key has no mapping // so we'll do the same ssortingng val; if (entities.TryGetValue(code, out val)) return val; else return null; } }