Słowo kluczowe const
Słowo kluczowe const
służy do deklarowania pola stałej lub stałej lokalnej. Pola stałe i lokalne nie są zmiennymi i nie można ich modyfikować. Stałe mogą być liczbami, wartościami logicznymi, ciągami lub pustym odwołaniem. Nie twórz stałej reprezentującej informacje, które mają zostać zmienione w dowolnym momencie. Na przykład nie używaj pola stałego do przechowywania ceny usługi, numeru wersji produktu ani nazwy marki firmy. Te wartości mogą się zmieniać w czasie, a ponieważ kompilatory propagują stałe, inny kod skompilowany z użyciem twoich bibliotek będzie musiał zostać ponownie skompilowany, aby uwzględnić zmiany. Zobacz również słowo kluczowe readonly. Na przykład:
const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";
ciągi interpolowane mogą być stałe, jeśli wszystkie używane wyrażenia są również ciągami stałymi. Ta funkcja może poprawić kod, który kompiluje stałe ciągi:
const string Language = "C#";
const string Platform = ".NET";
const string FullProductName = $"{Platform} - Language: {Language}";
Uwagi
Typ deklaracji stałej określa typ członków, które deklaracja wprowadza. Inicjator stałej lokalnej lub pola stałej musi być stałym wyrażeniem, które można niejawnie przekonwertować na typ docelowy.
Wyrażenie stałe to wyrażenie, które można w pełni ocenić w czasie kompilacji. Dlatego jedynymi możliwymi wartościami stałych typów odwołań są ciągi i odwołanie o wartości null.
Deklaracja stała może zadeklarować wiele stałych, takich jak:
public const double X = 1.0, Y = 2.0, Z = 3.0;
Modyfikator static
nie jest dozwolony w deklaracji stałej.
Stała może być częścią wyrażenia stałego w następujący sposób:
public const int C1 = 5;
public const int C2 = C1 + 100;
Notatka
Słowo kluczowe różni się od słowa kluczowego const
. Pole const
można zainicjować tylko w deklaracji pola. Pole readonly
można zainicjować w deklaracji lub w konstruktorze. W związku z tym readonly
pola mogą mieć różne wartości w zależności od używanego konstruktora. Ponadto, mimo że pole const
jest stałą czasu kompilacji, pole readonly
może być używane dla stałych czasu wykonywania, jak w tym wierszu: public static readonly uint l1 = (uint)DateTime.Now.Ticks;
Przykłady
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
*/
W poniższym przykładzie pokazano, jak zadeklarować stałą lokalną:
public class SealedTest
{
static void Main()
{
const int C = 707;
Console.WriteLine($"My local constant = {C}");
}
}
// Output: My local constant = 707
Specyfikacja języka C#
Aby uzyskać więcej informacji, zobacz następujące sekcje specyfikacji języka C#: