Lição 8: Objetos de valor e records
Quando um preço é só um decimal e uma moeda é só uma string, nada impede você de somar shekels com dólares ou de alterar uma quantia no meio de um cálculo. Nesta lição vamos construir objetos de valor com records do C# — valores imutáveis comparados por valor — para que erros assim sejam bloqueados
Um objeto de valor é como uma nota de 20 shekels: não importa qual nota exatamente você recebeu — só o valor conta. E você não consegue "editar" uma nota — só trocá-la por outra.
- Objeto de valor
- Um valor definido só pelos seus dados — dois preços de 10 ILS são o mesmo valor, sem identidade separada. Sempre imutável.
- tipo record
- Um tipo do C# em que o compilador gera igualdade por valor (Equals/==), propriedades só init, um construtor e ToString a partir de uma única declaração.
- imutabilidade
- O estado do objeto nunca muda depois de criado. Uma "mudança" é feita com uma expressão with — uma nova cópia com o valor atualizado, o original intacto.