Derniers tips / Mémos
Modélise nativement « exactement l'un de ces types », avec un switch exhaustif vérifié par le compilateur.
Fin des state machines générées par le compilateur : moins d'allocations et des stack traces enfin lisibles.
Recherche sémantique directement dans SQL Server 2025, sans base vectorielle séparée, en LINQ typé.
Framework UI cross-platform pour .NET : Windows, macOS, Linux, iOS, Android et WebAssembly.
Découvrez les nouvelles APIs asynchrones pour la compression ZIP et les améliorations de performance dans .NET 10
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ètesIReadOnlyDictionary<TKey, TValue>: lecture seule, sûr pour exposer en APIConcurrentDictionary<TKey, TValue>: thread‑safe, opérations atomiquesImmutableDictionary<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