En KeyValuePair<TKey, TValue>
est un struct et le struct en C# est un type de valeur et est mentionné comme étant immuable. La raison est évidente, le Dictionary<TKey,TValue>
doit être une structure de données performante. L'utilisation d'un type de référence au lieu d'un type de valeur entraînerait une surcharge de mémoire trop importante. Contrairement à un type de valeur directement stocké dans un dictionnaire, les références 32 ou 64 bits pour chaque entrée du dictionnaire seraient en outre allouées. Ces références seraient dirigées vers le tas pour l'instance de l'entrée. Les performances globales seraient rapidement réduites.
Les règles de Microsoft pour choisir struct plutôt que class qui Dictionary<TKey,TValue>
satisfait :
CONSIDÉREZ définir une structure au lieu d'une classe si les instances du type sont petites et généralement de courte durée ou si elles sont couramment intégrées à d'autres objets.
ÉVITEZ de définir une structure à moins que le type ne possède toutes les caractéristiques suivantes :
- Il représente logiquement une seule valeur, comme les types primitifs (int, double, etc.).
- Il a une taille d'instance inférieure à 16 octets.
- Il est immuable.
- Elle ne devra pas être mise en boîte fréquemment.