Constantes (Guía de programación de C#)

Las constantes son valores inmutables que se conocen en tiempo de compilación y que no cambian durante la vida del programa. Las constantes se declaran con el modificador const. Solo los tipos integrados de C# se pueden declarar como const. Las constantes de tipo de referencia que no sean String solo se pueden inicializar con unvalor null. Los tipos definidos por el usuario, incluidas las clases, las estructuras y las matrices, no pueden ser const. Use el modificador readonly para crear una clase, una estructura o una matriz que se inicialice una vez en tiempo de ejecución (por ejemplo, en un constructor) y que posteriormente no se pueda cambiar.

C# no admite métodos, propiedades ni eventos const.

El tipo enum permite definir constantes con nombre para los tipos integrados enteros (por ejemplo, int, uint, long, etc.). Para más información, vea enum.

Las constantes se deben inicializar al declararse. Por ejemplo:

class Calendar1
{
    public const int Months = 12;
}

En este ejemplo la constante Months siempre es 12 y ni siquiera la propia clase la puede cambiar. De hecho, cuando el compilador detecta un identificador de constante en el código fuente de C# (por ejemplo, Months), sustituye directamente el valor literal en el código de lenguaje intermedio (IL) que genera. Dado que no hay ninguna dirección de variable asociada a una constante en tiempo de ejecución, no se pueden pasar los campos const por referencia ni pueden aparecer como un valor L en una expresión.

Nota

Tenga cuidado al hacer referencia a valores de constante definidos en otro código como archivos DLL. Si una nueva versión del archivo DLL define un nuevo valor para la constante, el programa conservará el valor literal anterior hasta que se vuelva a compilar con la versión nueva.

Se pueden declarar varias constantes del mismo tipo a la vez, por ejemplo:

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

La expresión que se usa para inicializar una constante puede hacer referencia a otra constante si no crea una referencia circular. Por ejemplo:

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

Las constantes pueden marcarse como públicas, privadas, protegidas, internas, protegidas internaso privadas protegidas. Estos modificadores de acceso definen cómo los usuarios de la clase pueden acceder a la constante. Para más información, vea Modificadores de acceso.

A las constantes se accede como si fueran campos estáticos porque el valor de la constante es el mismo para todas las instancias del tipo. No use la palabra clave static para declararlas. Las expresiones que no están en la clase que define la constante deben usar el nombre de la clase, un punto y el nombre de la constante para acceder a ella. Por ejemplo:

int birthstones = Calendar.Months;

Especificación del lenguaje C#

Para obtener más información, consulte la Especificación del lenguaje C#. La especificación del lenguaje es la fuente definitiva de la sintaxis y el uso de C#.

Consulte también