Collections clé-valeur en C# : dictionnaires et alternatives

Guide des structures de données clé-valeur en C# : dictionnaires, lookup tables et leurs cas d'usage optimaux.

IDictionary<TKey, TValue>

Contrat clé-valeur mutable avec ajout, suppression et accès par clé. Utile quand vous exposez des opérations d'écriture.

IReadOnlyDictionary<TKey, TValue>

Vue en lecture seule d'un dictionnaire : expose uniquement la lecture (Keys, Values, ContainsKey, TryGetValue). Parfait pour les APIs publiques.

ConcurrentDictionary<TKey, TValue>

Dictionnaire thread-safe pour les scénarios multi‑threads. Fournit AddOrUpdate, GetOrAdd sans verrou explicite.

ImmutableDictionary<TKey, TValue>

Structure immuable : chaque modification retourne une nouvelle instance partageant la plupart des données. Idéal pour le code fonctionnel et le multi‑threads.

Résumé
  • IDictionary<TKey, TValue> : lecture/écriture, opérations complètes
  • IReadOnlyDictionary<TKey, TValue> : lecture seule, sûr pour exposer en API
  • ConcurrentDictionary<TKey, TValue> : thread‑safe, opérations atomiques
  • ImmutableDictionary<TKey, TValue> : immutabilité, partage structurel
Astuces
  • Exposez IReadOnlyDictionary pour la sortie publique
  • Acceptez IDictionary uniquement si vous modifiez la collection
  • Utilisez ConcurrentDictionary en environnement concurrent
  • Préférez ImmutableDictionary quand la cohérence prime
Écrit le 2025-08-11