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

Las constantes son valores inmutables que se conocen en tiempo de compilación y no cambian mientras dura el programa. Las constantes se declaran con el modificador const. Solo los tipos integrados de C# (excluido System.Object) se pueden declarar como const. Para obtener una lista de los tipos integrados, vea Tabla de tipos integrados (Referencia de C#). Los tipos definidos por el usuario, incluidas las clases, los structs y las matrices, no pueden ser const. Use el modificador readonly para crear una clase, un struct 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 los métodos, propiedades o eventos const.

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

Las constantes se deben inicializar tal como se declaran. Por ejemplo:

class Calendar1
{
    public const int months = 12;
}

En este ejemplo, la constante months siempre es 12 y no se puede cambiar, ni siquiera puede hacerlo la propia clase. De hecho, cuando el compilador encuentra 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, los campos const no se pueden pasar mediante referencia y no pueden aparecer como un valor de l en una expresión.

Nota

Actúe con precaución al hacer referencia a los valores constantes definidos en otro código como los 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 nueva versión.

Se pueden declarar varias constantes del mismo tipo al mismo tiempo, por ejemplo:

class Calendar2
{
    const int months = 12, weeks = 52, days = 365;
}

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

class Calendar3
{
    const int months = 12;
    const int weeks = 52;
    const int days = 365;

    const double daysPerWeek = (double) days / (double) weeks;
    const double daysPerMonth = (double) days / (double) months;
}

Las constantes se pueden marcar como public, private, protected, internal o protectedinternal. Estos modificadores de acceso definen cómo los usuarios de la clase pueden tener acceso a la constante. Para obtener más información, vea Modificadores de acceso (Guía de programación de C#).

El acceso a las constantes se realiza como si éstas fuesen campos estáticos, porque el valor de la constante es el mismo en todas las instancias del tipo. No se utiliza la palabra clave static para declararlas. Las expresiones que no están incluidas en la clase que define la constante deben usar el nombre de la clase, un punto y el nombre de la constante para tener acceso a la constante. Por ejemplo:

int birthstones = Calendar.months;

Especificación del lenguaje C#

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

Vea también

Referencia

Clases y estructuras (Guía de programación de C#)

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

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

readonly (Referencia de C#)

Conceptos

Guía de programación de C#

Otros recursos

Immutability in C# Part One: Kinds of Immutability