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:
- állandók
- állandó kifejezések