Cómo usar const, readonly y static en C #

Las palabras clave const, readonly y static se utilizan a menudo al programar en C #. Sin embargo, aunque estas palabras clave tienen diferencias importantes, también tienen similitudes que a veces hacen que sea difícil saber cuándo usarlas. Este artículo analiza las palabras clave const, static y readonly en C #, cómo se comparan y cómo deberíamos usarlas en nuestras aplicaciones C #.

Para trabajar con los ejemplos de código proporcionados en este artículo, debe tener Visual Studio 2019 instalado en su sistema. Si aún no tiene una copia, puede descargar Visual Studio 2019 aquí. 

Crear un proyecto de aplicación de consola en Visual Studio 2019

En primer lugar, creemos un proyecto de aplicación de consola .NET Core en Visual Studio. Suponiendo que Visual Studio 2019 esté instalado en su sistema, siga los pasos que se describen a continuación para crear un nuevo proyecto de aplicación de consola .NET Core en Visual Studio.

  1. Inicie el IDE de Visual Studio.
  2. Haga clic en "Crear nuevo proyecto".
  3. En la ventana "Crear nuevo proyecto", seleccione "Aplicación de consola (.NET Core)" en la lista de plantillas que se muestran.
  4. Haga clic en Siguiente.
  5. En la ventana "Configure su nuevo proyecto" que se muestra a continuación, especifique el nombre y la ubicación del nuevo proyecto.
  6. Haga clic en Crear.

Esto creará un nuevo proyecto de aplicación de consola .NET Core en Visual Studio 2019. Usaremos este proyecto para ilustrar el uso de las palabras clave const, readonly y static en C # en las secciones posteriores de este artículo.

Utilice la palabra clave const en C #

La palabra clave const (lectura: constante) en C # se usa para definir una variable constante, es decir, una variable cuyo valor no cambiará durante la vida útil del programa. Por lo tanto, es imperativo que asigne un valor a una variable constante en el momento de su declaración.

Este valor de una variable constante también se conoce como valor de "tiempo de compilación". Las variables declaradas mediante la palabra clave const también se conocen como constantes en tiempo de compilación. Cabe señalar que una variable constante es inmutable, es decir, el valor asignado a una variable constante no se puede cambiar posteriormente.

El siguiente fragmento de código ilustra cómo puede definir una constante en tiempo de compilación mediante la palabra clave const en C #.

const string connectionString = "Especifique aquí la cadena de conexión de su base de datos.";

Tenga en cuenta que debe asignar un valor a una variable constante en el momento de definirla. Tenga en cuenta también que no puede utilizar la palabra clave const para crear un objeto constante. La palabra clave const solo se puede aplicar a los tipos de datos primitivos (como ints, floats, chars y booleanos) y cadenas. Entendamos el uso de const con un ejemplo.

Considere la siguiente clase llamada Autor. Le daremos a la clase Author solo algunas propiedades para que sea simple.

Autor de clase pública

    {

        public int Id {obtener; conjunto; }

        cadena pública FirstName {get; conjunto; }

        cadena pública LastName {get; conjunto; }

        Dirección de cadena pública {get; conjunto; }

    }

Ahora, si intenta crear un objeto constante de la clase Author usando la palabra clave const, observará el error de compilación que se muestra en la Figura 1 a continuación.

Este error indica que el lado derecho del operador de asignación debe tener un valor constante para satisfacer la expresión. Debido a que la declaración new Author()no es una constante, la asignación no es válida y, por lo tanto, el error.

Utilice la palabra clave readonly en C #

La palabra clave readonly se puede utilizar para definir una variable o un objeto como solo legible. Esto significa que a la variable u objeto se le puede asignar un valor en el ámbito de la clase o solo en un constructor. No puede cambiar el valor o reasignar un valor a una variable u objeto de solo lectura en ningún otro método excepto en el constructor.

Entendamos esto con un ejemplo. Considere la siguiente clase llamada DbManager.

clase pública DbManager

    {

        cadena de solo lectura pública connectionString =

        "Especifique aquí la cadena de conexión de su base de datos.";

        public DbManager ()

        {

            connectionString = "Puede reasignar un valor aquí.";

        }

        public void ReAssign ()

        {

            connectionString = "Esto no está permitido";

        }

    }

El código anterior no se compilará y se le presentará el error que se muestra en la Figura 2.

Utilice la palabra clave estática en C #

La palabra clave estática en C # se puede usar en una variable, un método o un objeto. Tenga en cuenta que un miembro estático de una clase pertenece al tipo de objeto más que a la instancia del tipo. En otras palabras, se accede a los miembros estáticos con el nombre de la clase, no con el nombre de una instancia. 

Considere la siguiente clase llamada Utility que contiene un método estático.

utilidad de clase pública

    {

        public static void SomeMethod ()

        {

            // Escribe tu código aquí

        }

    }

No puede llamar al método SomeMethod()utilizando una instancia de la clase Utility. Más bien, debe llamar a este método utilizando la siguiente sintaxis.

Utility.SomeMethod ();

La misma regla se aplica a una variable estática o un objeto estático. Puede hacer referencia a un miembro estático de una clase solo mediante la sintaxis que se muestra a continuación.

ClassName . Miembro;

O

ClassName . Miembro();

Un constructor de una clase puede ser estático. Se usa un constructor estático de una clase para inicializar los miembros estáticos de la clase. Sin embargo, un constructor estático de una clase no puede aceptar parámetros.

Una regla para const, readonly y static

Esta es la regla empírica que puede seguir al trabajar con palabras clave const, readonly y static. Utilice la palabra clave const cuando el valor contenido en una variable nunca cambie durante la vida útil de la aplicación. Utilice la palabra clave readonly cuando no esté seguro de si el valor de una variable de un objeto debe cambiar, pero desea evitar que otras clases cambien el valor. Utilice la palabra clave estática cuando desee que el miembro de una clase pertenezca al tipo en lugar de a la instancia del tipo.

Cómo hacer más en C #:

  • Cómo usar anotaciones de datos en C #
  • Cómo trabajar con GUID en C # 8
  • Cuándo usar una clase abstracta frente a una interfaz en C #
  • Cómo trabajar con AutoMapper en C #
  • Cómo usar expresiones lambda en C #
  • Cómo trabajar con delegados Action, Func y Predicate en C #
  • Cómo trabajar con delegados en C #
  • Cómo implementar un registrador simple en C #
  • Cómo trabajar con atributos en C #
  • Cómo trabajar con log4net en C #
  • Cómo implementar el patrón de diseño del repositorio en C #
  • Cómo trabajar con la reflexión en C #
  • Cómo trabajar con filesystemwatcher en C #
  • Cómo realizar la inicialización diferida en C #
  • Cómo trabajar con MSMQ en C #
  • Cómo trabajar con métodos de extensión en C #
  • Cómo usar expresiones lambda en C #
  • Cuándo usar la palabra clave volátil en C #
  • Cómo usar la palabra clave yield en C #
  • Cómo implementar polimorfismo en C #
  • Cómo construir su propio programador de tareas en C #
  • Cómo trabajar con RabbitMQ en C #
  • Cómo trabajar con una tupla en C #
  • Explorando métodos virtuales y abstractos en C #
  • Cómo usar Dapper ORM en C #
  • Cómo usar el patrón de diseño flyweight en C #