Índice:
Definição - O que significa Tipo Imutável?
Um tipo imutável, no contexto de 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 o estado do objeto como somente leitura, porque não pode ser modificado após ser atribuído durante a inicialização.
Os tipos imutáveis são projetados para gerenciamento eficiente de memória e melhor velocidade, o que os torna adequados para objetos com requisitos de sincronização. A imutabilidade fornece melhor legibilidade do código, fazendo alterações na visibilidade do estado do programa e isolando as operações que mudam de estado daquelas que não o fazem. Tipos imutáveis fornecem segurança mais alta que tipos mutáveis.
Um tipo imutável é usado onde os dados devem persistir após serem atribuídos uma vez, mas sem nenhum requisito para que os dados sejam alterados no futuro. Como objetos imutáveis não alteram seu estado, eles são mais úteis em cenários de vários segmentos e processos, pois vários threads podem ler ou gravar um objeto, o que pode causar condições de corrida e problemas de sincronização.
Techopedia explica Tipo Imutável
Objetos do tipo imutável podem ser criados com o uso das palavras-chave "const" e "readonly". Enquanto readonly permite a modificação de um campo dentro do construtor, const não. Números, strings e null podem ser usados apenas como campos const, que são realmente imutáveis. O Readonly não é verdadeiramente imutável porque permite escrever apenas uma vez. Portanto, não é uma constante em tempo de compilação como o campo const. Objetos verdadeiramente imutáveis nunca alteram seu estado interno e, portanto, são inerentemente seguros para threads.
A classe System.String é um tipo de referência imutável fornecido na biblioteca de classes do .NET framework. Essa classe cria um novo objeto de cadeia internamente para qualquer ação de manipulação de cadeia. O conteúdo de objetos desse tipo não muda, embora a sintaxe faça com que apareça como se o conteúdo pudesse ser alterado. Além disso, string é usada como chave da tabela de hash para o cálculo dos valores de hash para evitar o risco de corromper a estrutura de dados do hash.
A principal desvantagem dos tipos imutáveis é que eles requerem mais recursos do que outros tipos de objetos.
