Constantes locales

Constantes locales (Local Constants)

Las constantes locales se parecen mucho a las variables locales, con una diferencia fundamental: una vez inicializada, su valor no se puede modificar.

Al igual que las variables locales, las constantes deben declararse dentro de un bloque de código.

Las constantes tienen dos propiedades esenciales:

  1. Es obligatorio asignar un valor al declararla;
  2. Una vez declarada, no se permite cambiar su valor.

Sintaxis básica de constantes

const Tipo NombreConstante = ValorInicial;

// const: palabra clave, debe ir justo antes del tipo de dato
// = ValorInicial: no se puede omitir, es obligatorio
Lenguaje del código: JavaScript (javascript)

Explicación de las reglas sintácticas

Si comparamos con la declaración normal de campos o variables, encontramos dos diferencias:

  1. Se añade la palabra reservada const antes del tipo de datos;
  2. Hay que indicar un valor inicial y este valor debe poder resolverse en tiempo de compilación:
    • Normalmente literales de tipos básicos o expresiones formadas por tipos primitivos;
    • Se admite asignar null;
    • No se pueden asignar referencias de instancias de objetos (las referencias a objetos se determinan en tiempo de ejecución y no cumplen el requisito de constante de compilación).

class Program
{
    static void Main()
    {
        int a = 10; // esto es una variable

        const int b = 20; // esto es una constante, muy similar a una variable
                          // la palabra const indica que se trata de una constante

        a = 100; // las variables admiten reasignación
        a = 200; // se puede modificar cuantas veces queramos

        // Error
        b = 300; // no se puede modificar una constante, el compilador dará error

        // El uso de constantes mejora la legibilidad y mantenibilidad del código

        
        int c; // declaración
        c = 12; // las variables permiten separar declaración y asignación

        // En constantes no se puede separar declaración e inicialización
        // Error
        const double d; // solo declaración
        d = 3.14; // esto funciona con variables, no con constantes
    }
}Lenguaje del código: C# (cs)

Estos dos errores tienen causas distintas: el primero intenta modificar el valor de una constante, el segundo separa declaración e inicialización. En las constantes, ambos pasos deben realizarse simultáneamente.

¿Se puede usar un objeto de clase como constante?

La expresión asignada a la constante phone tiene que ser una constante de tiempo de compilación.

new Phone() reserva memoria en el montón y crea un objeto cuando se ejecuta el programa; se trata de un valor en tiempo de ejecución.

C# no permite asignar referencias de objetos en tiempo de ejecución a constantes locales const, lo que provoca directamente el error CS0133.

class Program
{
    static void Main()
    {
        const Phone phone = new Phone();
    }
}

class Phone
{

}Lenguaje del código: C# (cs)

Nota complementaria sobre la palabra clave

const no es un modificador; forma parte fundamental de la sintaxis de declaración y debe escribirse directamente antes del tipo de dato.

Palabras como private, public y protected sí son modificadores.

Reglas de ámbito y ejemplo

Las reglas de ámbito de las constantes locales coinciden totalmente con las de las variables locales: si se declara dentro de un método o bloque de código, dejará de existir cuando finalice la ejecución del bloque.

void ShowArea()
{
    const double PI = 3.1416; // declaramos la constante local PI
    for (int radius = 1; radius <= 5; radius++) // mostramos el área de círculos con radio 1 a 5
    {
        double area = radius * radius * PI; // leemos el valor de la constante PI
        Console.WriteLine($"Radio: {radius}, Área: {area}");
    }
}
Lenguaje del código: C# (cs)

La constante PI solo es accesible dentro del método ShowArea y se elimina cuando el método termina su ejecución.


class Program
{
    static void Main()
    {
        ShowArea();
    }

    static void ShowArea()
    {
        const double PI = 3.1416; 
        for (int radius = 1; radius <= 5; radius++) 
        {
            double area = radius * radius * PI;
            Console.WriteLine($"Radius: {radius}, Area: {area}");
        }
    }

}
Lenguaje del código: C# (cs)
Ámbito de la constante PI (zona roja). Al igual que las variables, su ámbito está limitado por las llaves {} del bloque superior; el bloque superior de PI es el cuerpo del método.

Constantes locales

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *