Sobes.tech
Junior

¿Para qué se utilizan los campos con el modificador readonly en C#?

sobes.tech AI

Respuesta de la IA

Un campo con el modificador readonly en C# solo puede ser inicializado en el momento de la declaración del campo o en el constructor de la clase. Después de la inicialización, su valor no puede ser cambiado.

Objetivos de uso:

  1. Garantizar inmutabilidad: Asegura que el valor del campo no será cambiado accidentalmente después de crear el objeto. Esto aumenta la fiabilidad del código y facilita la depuración.
  2. Constantes para cada instancia: A diferencia de las constantes estáticas (const), los campos readonly pueden tener diferentes valores en diferentes instancias de la clase.
  3. Inicialización en el constructor: Permite establecer un valor final para el campo basado en la lógica del constructor, lo cual no es posible para campos const (que deben ser inicializados con un literal o constante en tiempo de compilación).
  4. Mejora del rendimiento al trabajar con estructuras: Para estructuras, los campos readonly pueden mejorar el rendimiento, ya que el compilador puede realizar ciertas optimizaciones sabiendo que el valor no cambiará.

Ejemplo:

public class MyClass
{
    public readonly int ImmutableValue; // Puede ser inicializado aquí o en el constructor
    public readonly string Name;

    // Constructor para asignar valores a los campos readonly
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Este método causará un error de compilación, ya que intenta modificar un campo readonly
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Error de compilación
    // }
}