Sobes.tech
Junior

Para que fins são utilizados os campos com o modificador readonly em C#?

sobes.tech IA

Resposta da IA

Um campo com o modificador readonly em C# só pode ser inicializado no momento da declaração do campo ou no construtor da classe. Após a inicialização, o seu valor não pode ser alterado.

Objetivos de uso:

  1. Garantir imutabilidade: Garante que o valor do campo não será alterado acidentalmente após a criação do objeto. Isto aumenta a fiabilidade do código e facilita a depuração.
  2. Constantes para cada instância: Ao contrário das constantes estáticas (const), os campos readonly podem ter valores diferentes para diferentes instâncias da classe.
  3. Inicialização no construtor: Permite definir um valor final para o campo com base na lógica do construtor, o que não é possível para campos const (que devem ser inicializados com um literal ou constante durante a compilação).
  4. Melhoria do desempenho ao trabalhar com estruturas: Para estruturas, os campos readonly podem melhorar o desempenho, pois o compilador pode fazer certas otimizações sabendo que o valor não mudará.

Exemplo:

public class MyClass
{
    public readonly int ImmutableValue; // Pode ser inicializado aqui ou no construtor
    public readonly string Name;

    // Construtor para atribuir valores aos campos readonly
    public MyClass(int value, string name)
    {
        ImmutableValue = value;
        Name = name;
    }

    // Este método causará um erro de compilação, pois tenta modificar um campo readonly
    // public void TryChangeValue(int newValue)
    // {
    //     ImmutableValue = newValue; // Erro de compilação
    // }
}