Structures (Guide de programmation C#)

Les structs sont définis à l'aide du mot clé struct, par exemple :

public struct PostalAddress
{
    // Fields, properties, methods and events go here...
}

Les structs partagent presque tous la même syntaxe que les classes, bien que les structs soient plus limités que les classes :

  • Dans une déclaration de structure, les champs ne peuvent pas être initialisés à moins qu'ils ne soient déclarés comme const ou static.

  • Un struct ne peut pas déclarer de constructeur par défaut - un constructeur sans paramètres - ou un destructeur.

Les copies de structs sont créées et détruites automatiquement par le compilateur. Un constructeur et un destructeur par défaut sont donc inutiles. En effet, le compilateur implémente le constructeur par défaut en assignant tous les champs de leurs valeurs par défaut (consultez Tableau des valeurs par défaut). Les structs ne peuvent pas hériter d'autres structs ou classes.

Les structs sont des types valeur - lorsqu'un objet est créé d'un struct et assigné à une variable, la variable contient la valeur entière du struct. Lorsqu'une variable qui contient un struct est copiée, toutes les données sont copiés, et toute modification apportée à la nouvelle copie ne change pas les données de l'ancienne copie. Étant donné que les structs n'utilisent pas de références, ils n'ont pas d'identité - il n'y a aucun moyen de faire la distinction entre deux instances d'un type valeur présentant les mêmes données. Tous les types valeur en C# dérivent de manière inhérente de ValueType, qui hérite de Object.

Les types valeur peuvent être convertis en types référence par le compilateur selon processus appelé conversion boxing. Pour plus d'informations, consultez Boxing et unboxing.

Vue d'ensemble des structs

Les structs ont les propriétés suivantes :

  • Les structs sont des types valeur, alors que les classes sont des types référence.

  • Contrairement aux classes, les structs peuvent être instanciés sans recours à un opérateur New.

  • Les structures peuvent déclarer des constructeurs, mais elles doivent prendre des paramètres.

  • Un struct ne peut pas hériter d'un autre struct ou d'une classe ; il ne peut pas non plus servir de base à une classe. Tous les structs héritent directement de System.ValueType, qui hérite de System.Object.

  • Un struct peut implémenter des interfaces.

Rubriques connexes

Pour plus d'informations

Voir aussi

Référence

Objets, classes et structs (Guide de programmation C#)

Concepts

Guide de programmation C#
Conception de structures
Classes (Guide de programmation C#)