class / struct

Références

L'actualité

Librairie

L'information

Champs

Un champ est une variable de tout type qui est déclarée directement dans une classe ou un struct. Les champs sont membres de leur type contenant.

Les classes et les structs peuvent avoir des champs d'instance ou des champs statiques, ou les deux. Les champs d'instance sont spécifiques à une instance de type. Si vous avez une classe T avec un champ d'instance F, vous pouvez créer deux objets de type T et modifier la valeur de F dans chaque objet, sans affecter la valeur de l'autre objet. En revanche, un champ statique appartient à la classe, et il est partagé entre toutes les instances de cette classe. Les modifications apportées à l'instance A seront visibles immédiatement aux instances B et C si elles accèdent au champ.

En règle générale, vous devez utiliser des champs uniquement pour les variables dont l'accessibilité est privée ou protégée. Les données que votre classe expose au code client doivent être fournies via des méthodes, des propriétés et des indexeurs. L'utilisation de ces constructions pour l'accès indirect aux champs internes permet d'éviter les valeurs d'entrée non valides. Un champ privé qui stocke les données exposées par une propriété publique est appelé magasin de stockage ou champ de stockage.

En général, les champs stockent les données qui doivent être accessibles à plusieurs méthodes de classe et doivent être stockées plus longtemps que la durée de vie d'une méthode. Par exemple, une classe qui représente une date de calendrier peut avoir trois champs de type entier : un pour le mois, un pour le jour et un pour l'année. Les variables qui ne sont pas utilisées en dehors de la portée d'une méthode doivent être déclarées comme des variables locales dans le corps de la méthode.

Les champs sont déclarés dans le bloc Class en spécifiant le niveau d'accès du champ, suivi du type du champ, puis du nom du champ. Par exemple :

Pour accéder à un champ dans un objet, ajoutez un point après le nom de l'objet, suivi du nom du champ, comme dans objectname.fieldname. Par exemple :

Une valeur initiale peut être attribuée à un champ à l'aide de l'opérateur d'assignation, lorsque le champ est déclaré. Pour assigner automatiquement le champ day à "Monday", par exemple, vous devez déclarer day, comme dans l'exemple suivant :

Les champs sont initialisés juste avant le constructeur pour l'instance d'objet qui est appelée. Si le constructeur assigne la valeur d'un champ, la valeur assignée pendant la déclaration du champ sera remplacée. Pour plus d'informations, consultez Utilisation de constructeurs.

Un initialiseur de champ ne peut pas référencer d'autres champs d'instance.

Les champs peuvent être marqués comme public, private, protected, internal, protected internal ou private protected. Ces modificateurs d'accès définissent comment les utilisateurs de la classe peuvent accéder aux champs. Pour plus d'informations, consultez la page Modificateurs d'accès.

Facultatif : vous pouvez déclarer un champ comme static. Ainsi, le champ est disponible à tout moment pour les appelants, même si aucune instance de la classe n'existe. Pour plus d'informations, consultez Classes statiques et membres de classe statique.

Un champ peut être déclaré comme readonly. Un champ en lecture seule ne peut recevoir de valeur que pendant l'initialisation ou dans un constructeur. Un champ static readonly est très similaire à une constante, à ceci près que le compilateur C# n'a pas accès à la valeur d'un champ statique en lecture seule au moment de la compilation, mais seulement au moment de l'exécution. Pour plus d'informations, consultez Constantes.