const (Referencia de C#)const (C# Reference)

La palabra clave const se usa para declarar un campo constante o una local constante.You use the const keyword to declare a constant field or a constant local. Los campos y locales constantes no son variables y no se pueden modificar.Constant fields and locals aren't variables and may not be modified. Las constantes pueden ser números, valores booleanos, cadenas o una referencia nula.Constants can be numbers, Boolean values, strings, or a null reference. No cree una constante para representar información que esperas que cambie en algún momento.Don’t create a constant to represent information that you expect to change at any time. Por ejemplo, no use un campo constante para almacenar el precio de un servicio, un número de versión de producto o el nombre comercial de una compañía.For example, don’t use a constant field to store the price of a service, a product version number, or the brand name of a company. Estos valores pueden cambiar con el tiempo y, como los compiladores propagan las constantes, otro código compilado con sus bibliotecas tendrán que volver a compilarse para ver los cambios.These values can change over time, and because compilers propagate constants, other code compiled with your libraries will have to be recompiled to see the changes. Vea también la palabra clave readonly.See also the readonly keyword. Por ejemplo:For example:

const int X = 0;
public const double GravitationalConstant = 6.673e-11;
private const string ProductName = "Visual C#";

ComentariosRemarks

El tipo de una declaración constante especifica el tipo de los miembros que la declaración presenta.The type of a constant declaration specifies the type of the members that the declaration introduces. El inicializador de una local constante o de un campo constante debe ser una expresión constante que se pueda convertir implícitamente al tipo de destino.The initializer of a constant local or a constant field must be a constant expression that can be implicitly converted to the target type.

Una expresión constante es una expresión que se puede evaluar por completo en tiempo de compilación.A constant expression is an expression that can be fully evaluated at compile time. Por lo tanto, los únicos valores posibles para las constantes de tipos de referencia son string y una referencia nula.Therefore, the only possible values for constants of reference types are string and a null reference.

La declaración de constante puede declarar varias constantes, tales como:The constant declaration can declare multiple constants, such as:

public const double X = 1.0, Y = 2.0, Z = 3.0;

El modificador static no se permite en una declaración de constante.The static modifier is not allowed in a constant declaration.

Una constante puede participar en una expresión constante, de la siguiente manera:A constant can participate in a constant expression, as follows:

public const int C1 = 5;
public const int C2 = C1 + 100;

Nota

La palabra clave readonly difiere de la palabra clave const.The readonly keyword differs from the const keyword. Un campo const solo se puede inicializar en la declaración del campo.A const field can only be initialized at the declaration of the field. Un campo readonly se puede inicializar en la declaración o en un constructor.A readonly field can be initialized either at the declaration or in a constructor. Por lo tanto, los campos readonly pueden tener diferentes valores en función del constructor que se use.Therefore, readonly fields can have different values depending on the constructor used. Además, aunque un campo const es una constante en tiempo de compilación, el campo readonly se puede usar para constantes en tiempo de ejecución, como en esta línea: public static readonly uint l1 = (uint)DateTime.Now.Ticks;Also, although a const field is a compile-time constant, the readonly field can be used for run-time constants, as in this line: public static readonly uint l1 = (uint)DateTime.Now.Ticks;

EjemploExample

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()
    {
        SampleClass mC = new SampleClass(11, 22);
        Console.WriteLine("x = {0}, y = {1}", mC.x, mC.y);
        Console.WriteLine("c1 = {0}, c2 = {1}", 
                          SampleClass.c1, SampleClass.c2);
    }
}
/* Output
    x = 11, y = 22
    c1 = 5, c2 = 10
*/

EjemploExample

Este ejemplo demuestra cómo usar las constantes como variables locales.This example demonstrates how to use constants as local variables.

public class SealedTest
{
    static void Main()
    {
        const int c = 707;
        Console.WriteLine("My local constant = {0}", c);
    }
}
// Output: My local constant = 707

Especificación del lenguaje C#C# language specification

Para obtener más información, consulte la Especificación del lenguaje C#.For more information, see the C# Language Specification. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.The language specification is the definitive source for C# syntax and usage.

Vea tambiénSee also