Constantes (Guide de programmation C#)
Les constantes sont des valeurs immuables qui sont connues au moment de la compilation et qui ne changent pas pendant la durée de vie du programme. Les constantes sont déclarées avec le modificateur const. Seuls les types intégrés C# peuvent être déclarés en tant que const
. Les constantes de type référence autres que String ne peuvent être initialisées qu’avec une valeur null. Les types définis par l’utilisateur, notamment les classes, les structs et les tableaux, ne peuvent pas être const
. Utilisez le modificateur readonly pour créer une classe, un struct ou un tableau initialisé une fois au moment de l’exécution (par exemple, dans un constructeur) et qui ne peut pas être modifié ultérieurement.
C# ne prend pas en charge les propriétés, les événements ou les méthodes const
.
Le type enum vous permet de définir des constantes nommées pour les types intégrés intégraux (par exemple, int
, uint
, long
, etc.). Pour plus d’informations, consultez enum.
Les constantes doivent être initialisées à mesure qu’elles sont déclarées. Par exemple :
class Calendar1
{
public const int Months = 12;
}
Dans cet exemple, la constante Months
est toujours 12, et ne peut pas être modifiée, même par la classe elle-même. En fait, quand le compilateur rencontre un identificateur constant dans du code source C# (par exemple, Months
), il substitue la valeur littérale directement dans le code en langage intermédiaire (IL, Intermediate Language) qu’il produit. Étant donné qu’aucune adresse de variable n’est associée à une constante au moment de l’exécution, les champs const
ne peuvent pas être passés par référence et ne peuvent pas apparaître comme l-value dans une expression.
Notes
Procédez avec précaution lorsque vous faites référence à des valeurs constantes définies dans un autre code telles que des DLL. Si une nouvelle version de la DLL définit une nouvelle valeur pour la constante, votre programme conserve l’ancienne valeur littérale jusqu’à ce qu’elle soit recompilée sur la nouvelle version.
Plusieurs constantes du même type peuvent être déclarées en même temps, par exemple :
class Calendar2
{
public const int Months = 12, Weeks = 52, Days = 365;
}
L’expression utilisée pour initialiser une constante peut référencer une autre constante si elle ne crée pas de référence circulaire. Par exemple :
class Calendar3
{
public const int Months = 12;
public const int Weeks = 52;
public const int Days = 365;
public const double DaysPerWeek = (double) Days / (double) Weeks;
public const double DaysPerMonth = (double) Days / (double) Months;
}
Les constantes peuvent être marquées comme public, private, protected, internal, protected internal ou private protected. Ces modificateurs d’accès définissent la façon dont les utilisateurs de la classe peuvent accéder à la constante. Pour plus d’informations, consultez Modificateurs d’accès.
Les constantes sont accessibles comme si elles étaient des champs static, car la valeur de la constante est identique pour toutes les instances du type. Vous n’utilisez pas le mot clé static
pour les déclarer. Les expressions ne se trouvant pas dans la classe qui définit la constante doivent utiliser le nom de la classe, un point et le nom de la constante pour accéder à la constante. Par exemple :
int birthstones = Calendar.Months;
Spécification du langage C#
Pour plus d'informations, voir la spécification du langage C#. La spécification du langage est la source de référence pour la syntaxe C# et son utilisation.