Definição – o que significa Tipo imutável?
Um tipo imutável, no contexto do C #, é um tipo de objeto cujos dados não podem ser alterados após sua criação. Um tipo imutável define a propriedade ou estado do objeto como somente leitura porque ele não pode ser modificado depois de ser atribuído durante a inicialização.
Os tipos imutáveis são projetados para gerenciamento de memória eficiente e melhor velocidade, o que os torna adequados para objetos com requisitos de sincronização. A imutabilidade fornece melhor legibilidade do código, fazendo mudanças na visibilidade do estado do programa e isolando as operações que mudam de estado daquelas que não mudam. Tipos imutáveis fornecem maior segurança do que tipos mutáveis.
Um tipo imutável é usado onde os dados devem persistir depois de serem atribuídos uma vez, mas sem qualquer requisito para que os dados sejam alterados no futuro. Como os objetos imutáveis não mudam seu estado, eles são mais úteis em cenários multithread e multiprocess, pois vários threads podem ler ou gravar um objeto, o que pode causar condições de corrida e problemas de sincronização.
Definirtec explica o tipo imutável
Objetos de tipo imutável podem ser criados com o uso das palavras-chave “const” e “readonly”. Embora somente leitura permita a modificação de um campo dentro do construtor, const não permite. Números, strings e null só podem ser usados como campos const, que são realmente imutáveis. Readonly não é verdadeiramente imutável porque permite escrever apenas uma vez. Portanto, não é uma constante de tempo de compilação como o campo const. Objetos verdadeiramente imutáveis nunca mudam seu estado interno e são, portanto, inerentemente thread-safe.
A classe System.String é um tipo de referência imutável fornecido na biblioteca de classes do .NET Framework. Esta classe cria um novo objeto string internamente para qualquer ação de manipulação de string. O conteúdo dos objetos desse tipo não muda, embora a sintaxe faça parecer que o conteúdo pode ser alterado. Além disso, string é usada como chave da tabela hash para o cálculo de valores hash para evitar o risco de corromper a estrutura de dados hash.
A principal desvantagem dos tipos imutáveis é que eles requerem mais recursos do que outros tipos de objetos.
Esta definição foi escrita no contexto de C #