const (Referenční dokumentace jazyka C#)

Klíčové slovo const použijete k deklaraci konstantního pole nebo konstanty local. Konstantní pole a místní hodnoty nejsou proměnné a nemusí být změněny. Konstanty mohou být čísla, logické hodnoty, řetězce nebo nulový odkaz. Nevytvářejte konstantu, která bude představovat informace, které byste měli kdykoli změnit. Nepoužívejte například konstantní pole k uložení ceny služby, čísla verze produktu nebo názvu značky společnosti. Tyto hodnoty se mohou v průběhu času měnit a vzhledem k tomu, že kompilátory šíří konstanty, bude třeba další kód zkompilovaný s knihovnami znovu zkompilovat, aby bylo možné změny zobrazit. Viz také klíčové slovo jen pro čtení. Například:

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

Počínaje jazykem C# 10 mohou být interpolované řetězce konstantami, pokud jsou všechny použité výrazy také konstantní řetězce. Tato funkce může vylepšit kód, který vytváří konstantní řetězce:

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

Poznámky

Typ deklarace konstanty určuje typ členů, které deklarace zavádí. Inicializátor lokální konstanty nebo konstantního pole musí být konstantní výraz, který lze implicitně převést na cílový typ.

Konstantní výraz je výraz, který lze plně vyhodnotit v době kompilace. Jedinými možnými hodnotami pro konstanty odkazových typů jsou string a nulový odkaz.

Deklarace konstanty může deklarovat více konstant, například:

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

staticModifikátor není povolen v deklaraci konstanty.

Konstanta se může podílet na konstantním výrazu následujícím způsobem:

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

Poznámka

Klíčové slovo readonly se liší od const klíčového slova . Pole const lze inicializovat pouze v deklaraci pole. Pole readonly lze inicializovat buď v deklaraci, nebo v konstruktoru. Pole proto readonly mohou mít různé hodnoty v závislosti na použitém konstruktoru. I když je pole konstantou v době kompilace, lze pole použít pro konstanty za běhu, jako const readonly na tomto řádku: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Příklady

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
*/

Tento příklad ukazuje, jak použít konstanty jako místní proměnné.

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

specifikace jazyka C#

Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také