Imutabilidade torna objetos thread-safe por padrao, mais faceis de raciocinar e seguros para compartilhar entre componentes. Uma vez criado, o estado nunca muda β€” qualquer "alteracao" cria uma nova instancia.

Por que imutabilidade importa?

Objetos mutaveis compartilhados sao a principal causa de bugs em sistemas concorrentes. Imutabilidade elimina essa classe inteira de problemas.

escreveescreveconflitowithnova copiasem conflitoObject Aref1Object Bref2Shared StateMUTAVELRace Condition!Object Aoriginalwith { ... }copiaObject A'nova instanciaThread Safe
AspectoMutavelImutavel
Thread SafetyRequer locksSeguro por padrao
RaciocinioQuem alterou? Quando?Valor nunca muda
CompartilhamentoDefensive copiesPasse livremente
Hash/Dictionary keysHash pode mudarHash estavel
DebuggingEstado muda entre breakpointsEstado previsivel
Estilo funcionalEfeitos colateraisFuncoes puras
Por que imutabilidade e importante em C#?
Imutabilidade torna objetos thread-safe por padrao, elimina bugs de aliasing, garante que hash codes permanecam estaveis para uso como chaves de dicionario, e facilita o raciocinio sobre o codigo. Em sistemas distribuidos, snapshots imutaveis permitem leituras sem lock e publicacao atomica de novos estados.

Padroes de implementacao

Records

Igualdade por valor, with expressions, imutavel por padrao.

Init-only setters

Propriedades init permitem object initializers mas impedem mutacao apos construcao.

Readonly struct

Previne mutacao de campos e evita defensive copies ocultas.

Immutable Collections

Colecoes persistentes: edicoes criam novas versoes compartilhando estrutura.