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

Stałe są niezmienne wartości, które są znane w czasie kompilacji i nie zmieniają się w okresie istnienia programu.Constants are immutable values which are known at compile time and do not change for the life of the program. Stałe są zadeklarowane za pomocą modyfikatora const .Constants are declared with the const modifier. Tylko typy C# wbudowane (z wyjątkiem System.Object) mogą być zadeklarowane jako. constOnly the C# built-in types (excluding System.Object) may be declared as const. Aby uzyskać listę typów wbudowanych, zobacz tabela typy wbudowane.For a list of the built-in types, see Built-In Types Table. Typy zdefiniowane przez użytkownika, w tym klasy, struktury i tablice, nie mogą być const.User-defined types, including classes, structs, and arrays, cannot be const. Użyj modyfikatora tylko do odczytu , aby utworzyć klasę, strukturę lub tablicę, która jest inicjowana jednokrotnie w czasie wykonywania (na przykład w konstruktorze) i nie można jej zmienić.Use the readonly modifier to create a class, struct, or array that is initialized one time at runtime (for example in a constructor) and thereafter cannot be changed.

C#nie obsługuje const metod, właściwości ani zdarzeń.C# does not support const methods, properties, or events.

Typ wyliczenia pozwala definiować stałe nazwane dla wbudowanych typów całkowitych (na przykład int uint long,, i tak dalej).The enum type enables you to define named constants for integral built-in types (for example int, uint, long, and so on). Aby uzyskać więcej informacji, zobacz Wyliczenie.For more information, see enum.

Stałe muszą zostać zainicjowane, ponieważ są one zadeklarowane.Constants must be initialized as they are declared. Na przykład:For example:

class Calendar1
{
    public const int Months = 12;
}

W tym przykładzie stała months jest zawsze 12 i nie może być zmieniana nawet przez samą klasę.In this example, the constant months is always 12, and it cannot be changed even by the class itself. W rzeczywistości, gdy kompilator napotyka stały identyfikator w C# kodzie źródłowym (na przykład months), zastępuje wartość literału bezpośrednio do kodu języka pośredniego (IL), który tworzy.In fact, when the compiler encounters a constant identifier in C# source code (for example, months), it substitutes the literal value directly into the intermediate language (IL) code that it produces. Ze względu na to, że żaden adres zmiennej nie jest skojarzony ze const stałą w czasie wykonywania, pola nie mogą być przesyłane przez odwołanie i nie mogą występować jako l-wartość w wyrażeniu.Because there is no variable address associated with a constant at run time, const fields cannot be passed by reference and cannot appear as an l-value in an expression.

Uwaga

Należy zachować ostrożność w przypadku odwoływania się do wartości stałych zdefiniowanych w innym kodzie, takim jak dll.Use caution when you refer to constant values defined in other code such as DLLs. 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.If a new version of the DLL defines a new value for the constant, your program will still hold the old literal value until it is recompiled against the new version.

Można jednocześnie zadeklarować wiele stałych tego samego typu, na przykład:Multiple constants of the same type can be declared at the same time, for example:

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

Wyrażenie, które jest używane do inicjowania stałej może odwoływać się do innej stałej, jeśli nie tworzy odwołania cyklicznego.The expression that is used to initialize a constant can refer to another constant if it does not create a circular reference. Na przykład:For example:

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ętrznie lub chronione prywatnie.Constants can be marked as public, private, protected, internal, protected internal or private protected. Te Modyfikatory dostępu definiują sposób, w jaki użytkownicy klasy mogą uzyskać dostęp do stałej.These access modifiers define how users of the class can access the constant. Aby uzyskać więcej informacji, zobacz Modyfikatory dostępu.For more information, see Access Modifiers.

Stałe są dostępne, tak jakby były polami statycznymi, ponieważ wartość stałej jest taka sama dla wszystkich wystąpień tego typu.Constants are accessed as if they were static fields because the value of the constant is the same for all instances of the type. Nie używasz słowa kluczowego static , aby je zadeklarować.You do not use the static keyword to declare them. Wyrażenia, które nie znajdują się w klasie, która definiuje stałą, muszą używać nazwy klasy, kropki i nazwy stałej, aby uzyskać dostęp do stałej.Expressions that are not in the class that defines the constant must use the class name, a period, and the name of the constant to access the constant. Przykład:For example:

int birthstones = Calendar.Months;

Specyfikacja języka C#C# Language Specification

Aby uzyskać więcej informacji, zobacz Specyfikacja języka C#.For more information, see the C# Language Specification. Specyfikacja języka jest ostatecznym źródłem informacji o składni i użyciu języka C#.The language specification is the definitive source for C# syntax and usage.

Zobacz takżeSee also