Partager via


const (référence C#)

Vous utilisez le mot clé const pour déclarer un champ constant ou une constante locale. Les champs et les éléments locaux constants ne sont pas des variables et ne peuvent pas être modifiés. Les constantes peuvent être des chiffres, des valeurs booléennes, des chaînes ou une référence null. Ne créez pas une constante pour représenter des informations qui doivent être modifiées. Par exemple, n'utilisez pas un champ constant pour stocker le prix d'un service, le numéro de version du produit ou le nom de la marque d'une société. Ces valeurs peuvent changer dans le temps, et dans la mesure où les compilateurs propagent les constantes, le code compilé avec vos bibliothèques devra être recompilé pour refléter ces modifications. Consultez également le mot clé readonly. Par exemple :

const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";

À partir de C# 10, les chaînes interpolées peuvent être des constantes si toutes les expressions utilisées sont également des chaînes constantes. Cette fonctionnalité peut améliorer le code qui génère des chaînes constantes :

const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";

Remarques

Le type d'une déclaration constante indique le type des membres introduit par la déclaration. L'initialiseur d’une constante locale ou d’un champ constant doit être une expression constante qui peut être implicitement convertie en type cible.

Une expression constante est une expression qui peut être complètement évaluée au moment de la compilation. C'est pourquoi les seules valeurs possibles pour les constantes des types référence sont des chaînes et une référence null.

La déclaration constante peut déclarer plusieurs constantes, notamment :

public const double X = 1.0, Y = 2.0, Z = 3.0;

Le modificateur static n'est pas autorisé dans une déclaration constante.

Une constante peut être utilisée dans une expression constante, comme suit :

public const int C1 = 5;
public const int C2 = C1 + 100;

Notes

Le mot clé readonly est différent du mot clé const. Un champ const ne peut être initialisé qu'au moment de la déclaration du champ. Un champ readonly peut être initialisé dans la déclaration ou dans un constructeur. C'est pourquoi, les champs readonly peuvent avoir des valeurs différentes en fonction du constructeur utilisé. De même, bien qu'un champ const soit une constante au moment de la compilation, le champ readonly peut être utilisé pour des constantes au moment de l'exécution, comme ci-après : public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Exemples

public class ConstTest
{
    class SampleClass
    {
        public int x;
        public int y;
        public const int C1 = 5;
        public const int C2 = C1 + 5;

        public SampleClass(int p1, int p2)
        {
            x = p1;
            y = p2;
        }
    }

    static void Main()
    {
        var mC = new SampleClass(11, 22);
        Console.WriteLine($"x = {mC.x}, y = {mC.y}");
        Console.WriteLine($"C1 = {SampleClass.C1}, C2 = {SampleClass.C2}");
    }
}
/* Output
    x = 11, y = 22
    C1 = 5, C2 = 10
*/

L’exemple suivant montre comment déclarer une constante locale :

public class SealedTest
{
    static void Main()
    {
        const int C = 707;
        Console.WriteLine($"My local constant = {C}");
    }
}
// Output: My local constant = 707

spécification du langage C#

Pour plus d’informations, consultez les sections suivantes de la spécification du langage C# :

Voir aussi