Megosztás a következőn keresztül:


A const kulcsszó

A const kulcsszóval konstansmezőt vagy helyi állandót deklarálhat. Az állandó mezők és a helyiek nem változók, és nem módosíthatók. Az állandók lehetnek számok, logikai értékek, sztringek vagy nullhivatkozások. Ne hozzon létre állandót az olyan információk megjelenítéséhez, amelyeket bármikor módosítani szeretne. Ne használjon például állandó mezőt egy szolgáltatás árának, egy termék verziószámának vagy egy vállalat márkanevének tárolásához. Ezek az értékek idővel változhatnak, és mivel a fordítók állandókat propagálnak, a kódtárakkal lefordított többi kódot újra kell fordítani a módosítások megtekintéséhez. Lásd még a readonly kulcsszót. Például:

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

Interpolált karakterláncok lehetnek állandók, ha az összes használt kifejezés is állandó karakterlánc. Ez a funkció javíthatja az állandó sztringeket tartalmazó kódot:

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

Megjegyzések

Az állandó deklaráció típusa határozza meg a deklaráció által bevezetett tagok típusát. Egy helyi állandó vagy állandó mező inicializálójának állandó kifejezésnek kell lennie, amely implicit módon konvertálható a céltípusra.

Az állandó kifejezés olyan kifejezés, amely fordítási időben teljes mértékben kiértékelhető. Ezért a hivatkozástípusok állandóinak egyetlen lehetséges értéke a sztringek és a nullhivatkozás.

Az állandó deklaráció több állandót is deklarálhat, például:

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

A static módosító nem engedélyezett állandó deklarációban.

Az állandók az alábbiak szerint vehetnek részt egy állandó kifejezésben:

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

Jegyzet

A csak olvasható kulcsszó eltér a const kulcsszótól. Egy const mező csak a mező deklarációjakor inicializálható. A readonly mező inicializálható a deklarációban vagy egy konstruktorban. Ezért readonly mezők a használt konstruktortól függően eltérő értékekkel rendelkezhetnek. Bár a const mező fordítási időállandó, a readonly mező futásidejű állandókhoz is használható, ahogy ebben a sorban is: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

Példák

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

Az alábbi példa bemutatja, hogyan deklarálhat helyi állandót:

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

C# nyelvspecifikáció

További információt a C# nyelvi specifikációjánakalábbi szakaszaiban talál:

Lásd még: