Sdílet prostřednictvím


Konstanty (Průvodce programováním v C#)

Konstanty jsou neměnné hodnoty, které jsou známé v době kompilace a nemění se pro životnost programu. Konstanty jsou deklarovány modifikátorem const . Jako předdefinované typy jazyka C# lze deklarovat constpouze jako . Konstanty referenčního typu jiné než String lze inicializovat pouze s hodnotou null . Uživatelem definované typy, včetně tříd, struktur a polí, nesmí být const. Modifikátor jen pro čtení slouží k vytvoření třídy, struktury nebo pole inicializovaného jednou za běhu (například v konstruktoru) a potom nelze změnit.

Jazyk C# nepodporuje const metody, vlastnosti ani události.

Typ výčtu umožňuje definovat pojmenované konstanty pro integrální předdefinované typy (například int, uint, longatd.). Další informace naleznete v výčtu.

Konstanty musí být inicializovány, protože jsou deklarovány. Příklad:

class Calendar1
{
    public const int Months = 12;
}

V tomto příkladu je konstanta Months vždy 12 a nelze ji změnit ani samotnou třídou. Ve skutečnosti, když kompilátor narazí na konstantní identifikátor ve zdrojovém kódu jazyka C# (například Months), nahradí literálovou hodnotu přímo do kódu zprostředkujícího jazyka (IL), který vytvoří. Vzhledem k tomu, že neexistuje žádná proměnná adresa přidružená k konstantě za běhu, const nelze pole předat odkazem a ve výrazu se nemohou zobrazit jako l-hodnota.

Poznámka:

Při odkazech na konstantní hodnoty definované v jiném kódu, jako jsou knihovny DLL, buďte opatrní. Pokud nová verze knihovny DLL definuje novou hodnotu konstanty, bude program stále obsahovat starou hodnotu literálu, dokud nebude znovu zkompilován proti nové verzi.

Více konstant stejného typu lze deklarovat současně, například:

class Calendar2
{
    public const int Months = 12, Weeks = 52, Days = 365;
}

Výraz, který se používá k inicializaci konstanty, může odkazovat na jinou konstantu, pokud nevytváří cyklický odkaz. Příklad:

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;
}

Konstanty lze označit jako veřejné, soukromé, chráněné, interní, chráněné interní nebo soukromé. Tyto modifikátory přístupu definují, jak uživatelé třídy mají přístup k konstantě. Další informace naleznete v tématu Modifikátory accessu.

Konstanty jsou přístupné, jako by šlo o statická pole, protože hodnota konstanty je stejná pro všechny instance typu. Klíčové slovo nepoužíváte static k deklaraci. Výrazy, které nejsou ve třídě definující konstantu, musí používat název třídy, tečku a název konstanty pro přístup k konstantě. Příklad:

int birthstones = Calendar.Months;

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é