Partager via


const (C# Reference) 

The const keyword is used to modify a declaration of a field or local variable. It specifies that the value of the field or the local variable is constant, which means it cannot be modified. For example:

const int x = 0;
public const double gravitationalConstant = 6.673e-11;
private const string productName = "Visual C#";

Remarks

The type of a constant declaration specifies the type of the members introduced by the declaration. A constant expression must yield a value of the target type, or of a type that can be implicitly converted to the target type.

A constant expression is an expression that can be fully evaluated at compile time. Therefore, the only possible values for constants of reference types are string and null.

The constant declaration can declare multiple constants, such as:

public const double x = 1.0, y = 2.0, z = 3.0;

The static modifier is not allowed in a constant declaration.

A constant can participate in a constant expression, as follows:

public const int c1 = 5;
public const int c2 = c1 + 100;

Note

The readonly keyword is different from the const keyword. A const field can only be initialized at the declaration of the field. A readonly field can be initialized either at the declaration or in a constructor. Therefore, readonly fields can have different values depending on the constructor used. Also, while a const field is a compile-time constant, the readonly field can be used for run-time constants, as in this lin: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Example

// const_keyword.cs
using System;
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() 
    {
        SampleClass mC = new SampleClass(11, 22);   
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2 );
    }
}

Output

x = 11, y = 22
c1 = 5, c2 = 10

This example demonstrates using constants as local variables.

// const_keyword_2.cs
using System;
public class MainClass
{
    static void Main()
    {
        const int c = 707;
        Console.WriteLine("My local constant = {0}", c);
    }
}

Output

My local constant = 707

C# Language Specification

For more information, see the following sections in the C# Language Specification:

  • 6.1.6 Implicit constant expression conversions

  • 8.5.2 Local constant declarations

See Also

Reference

C# Keywords
Modifiers (C# Reference)
readonly (C# Reference)

Concepts

C# Programming Guide

Other Resources

C# Reference