Choix entre des classes et des structures
Les classes sont des types référence tandis que les structures sont des types valeur. Les types référence sont alloués sur le tas et la gestion de la mémoire est contrôlée par le garbage collector. Les types valeur sont alloués sur la pile ou inline et libérés lorsqu'ils sont hors de portée. En général, les types valeur sont plus économiques à allouer et à libérer. Toutefois, s'ils sont utilisés dans des scénarios qui exigent un certain nombre de boxing et d'unboxing, leurs performances sont médiocres par rapport à celles des types référence. Pour plus d'informations, consultez Boxing et unboxing (Guide de programmation C#).
Pour plus d'informations sur les types valeur et les types référence, consultez Système de type commun.
Envisagez de définir une structure au lieu d'une classe si les instances du type sont petites et ont souvent une courte durée de vie ou qu'elles sont fréquemment incorporées à d'autres objets.
Ne définissez pas de structure sauf lorsque le type possède toutes les caractéristiques suivantes :
Il représente logiquement une seule valeur, semblable aux types primitifs (entier, double, etc.).
Il a une taille d'instance inférieure à 16 octets.
Il est immuable.
Il ne doit pas faire souvent l'objet d'un boxing.
Si une ou plusieurs de ces conditions ne sont pas satisfaites, créez un type référence au lieu d'une structure. Si vous ne respectez pas cette règle, les performances peuvent s'en ressentir.
Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.
Portions Copyright Addison-Wesley Corporation. Tous droits réservés.
Pour plus d'informations sur les règles de conception, consultez « règles de conception d'infrastructure : Conventions idiomes et modèles carnet de bibliothèques réutilisables framework » Krzysztof Cwalina et Brad Abrams, publiés par Addison-Wesley, 2005.
Voir aussi
Autres ressources
Instructions de conception de types
Instructions de conception pour le développement de bibliothèques de classes