Definição – o que significa o tipo mutável?
Tipo mutável, em C #, é um tipo de objeto cujos membros de dados, como propriedades, dados e campos, podem ser modificados após sua criação.
Os tipos mutáveis são usados em aplicativos paralelos, onde os objetos do tipo de valor mutável são mantidos na pilha pelo Common Language Runtime (CLR). Isso fornece alguma otimização, o que o torna mais rápido do que objetos alocados por heap. Para evitar que erros de sincronização ocorram em aplicativos paralelos devido a vários threads acessando os dados compartilhados, tipos mutáveis são usados com algum tipo de mecanismo de bloqueio.
Devido à sua natureza inerente, os dados de tipo mutável podem ser modificados durante o tempo de execução, portanto, o tipo mutável é freqüentemente usado quando o objeto contém uma grande quantidade de dados alteráveis. Embora o tipo mutável não seja tão thread-safe e seguro quanto o tipo imutável, é mais frequentemente usado com variáveis do tipo valor, que são alocadas na pilha, melhorando o desempenho.
Definirtec explica o tipo mutável
Todos os tipos de valor integrados, como int, double, etc., são tipos mutáveis e podem ser tornados imutáveis adicionando o modificador “somente leitura” antes das variáveis. Se um tipo de referência mutável for especificado com um modificador somente leitura, o compilador C # gerará um aviso. Ao adicionar um modificador somente leitura a um campo do tipo de referência, o campo não pode ser substituído por outra instância do tipo de referência, mas permitirá que os dados da instância do campo sejam modificados por meio do tipo de referência.
Por exemplo, StringBuilder é um tipo de referência mutável na biblioteca do .NET framework, por meio do qual o valor da string de uma instância criada desse tipo pode ser modificado anexando, removendo, substituindo ou inserindo caracteres.
Um tipo mutável não deve ser derivado de um tipo imutável porque existe a possibilidade de um método virtual na classe derivada substituí-lo de forma que os membros imutáveis sejam substituídos.
A principal limitação do tipo mutável é que ao passar um objeto do tipo mutável (como struct) por meio da atribuição de uma variável local ou como parâmetro de um método, o valor do objeto é transferido e não o próprio objeto. Com isso, a cópia do objeto é modificada e não o original. Esse comportamento pode levar a bugs inesperados.
Esta definição foi escrita no contexto de C #