Stałe (Przewodnik programowania w języku C#)

Stałe są niezmiennymi wartościami, które są znane w czasie kompilacji i nie zmieniają się w okresie życia programu. Stałe są deklarowane za pomocą modyfikatora const . Tylko wbudowane typy języka C# mogą być deklarowane jako const. Stałe typu odwołania inne niż String mogą być inicjowane tylko z wartością null . Typy zdefiniowane przez użytkownika, w tym klasy, struktury i tablice, nie mogą być const. Użyj modyfikatora readonly, aby utworzyć klasę, strukturę lub tablicę, która jest inicjowana jednorazowo w czasie wykonywania (na przykład w konstruktorze), a następnie nie można jej zmienić.

Język C# nie obsługuje const metod, właściwości ani zdarzeń.

Typ wyliczenia umożliwia definiowanie nazwanych stałych dla wbudowanych typów całkowitych (na przykład int, uint, longi tak dalej). Aby uzyskać więcej informacji, zobacz wyliczenie.

Stałe muszą być inicjowane, gdy są deklarowane. Na przykład:

class Calendar1
{
    public const int Months = 12;
}

W tym przykładzie stała Months jest zawsze równa 12 i nie można jej zmienić nawet przez samą klasę. W rzeczywistości, gdy kompilator napotka stały identyfikator w kodzie źródłowym języka C# (na przykład Months), zastępuje wartość literału bezpośrednio do kodu języka pośredniego (IL), który generuje. Ponieważ w czasie wykonywania nie ma adresu zmiennej skojarzonego z stałą, const pola nie mogą być przekazywane przez odwołanie i nie mogą być wyświetlane jako wartość l w wyrażeniu.

Uwaga

Należy zachować ostrożność podczas odwoływania się do wartości stałych zdefiniowanych w innym kodzie, takim jak biblioteki DLL. Jeśli nowa wersja biblioteki DLL definiuje nową wartość dla stałej, program będzie nadal przechowywać starą wartość literału, dopóki nie zostanie ponownie skompilowana względem nowej wersji.

Jednocześnie można zadeklarować wiele stałych tego samego typu, na przykład:

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

Wyrażenie używane do inicjowania stałej może odwoływać się do innej stałej, jeśli nie tworzy odwołania cyklicznego. Na przykład:

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

Stałe mogą być oznaczone jako publiczne, prywatne, chronione, wewnętrzne, chronione wewnętrzne lub prywatne. Te modyfikatory dostępu definiują, jak użytkownicy klasy mogą uzyskiwać dostęp do stałej. Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu.

Dostęp do stałych jest uzyskiwany tak, jakby były polami statycznymi , ponieważ wartość stałej jest taka sama dla wszystkich wystąpień typu. Nie używasz słowa kluczowego static do ich deklarowania. Wyrażenia, które nie znajdują się w klasie definiującej stałą, muszą używać nazwy klasy, kropki i nazwy stałej, aby uzyskać dostęp do stałej. Na przykład:

int birthstones = Calendar.Months;

Specyfikacja języka C#

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.

Zobacz też