Choix entre des classes et des structures

Mise à jour : novembre 2007

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 conversions boxing et unboxing, leurs performances sont médiocres par rapport à celles des types référence. Pour plus d'informations, consultez Conversion boxing et unboxing (Guide de programmation C#).

Pour plus d'informations sur les types valeur et les types référence, consultez Vue d'ensemble du système de type commun.

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'une conversion 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 instruction, 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 instructions de conception, consultez le livre « Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries » de Krzysztof Cwalina et Brad Abrams, publié 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