Udostępnij za pośrednictwem


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#:

Zobacz też