Objetos de valor no DDD - Por que imutáveis?

Não entendo por que objetos de valor no DDD devem ser imutáveis, nem vejo como isso é feito com facilidade. (Estou focando em C # e Entity Framework, se isso importa.)

Por exemplo, vamos considerar o objeto de valor de endereço clássico. Se você precisou alterar "123 Main St" para "123 MainRua", por que eu precisaria construir um objeto totalmente novo em vez de dizer myCustomer.Address.AddressLine1 =" 123 Main Street "? (Mesmo se o Entity Framework suportasse estruturas, isso ainda seria um problema, não seria?)

Entendo (acho) a ideia de que objetos de valor não têm uma identidade e fazem parte de um objeto de domínio, mas alguém pode explicar por que a imutabilidade é uma coisa boa?

EDITAR: Minha pergunta final aqui realmente deveria ser "Alguém pode explicar por que a imutabilidade é uma coisa boa?conforme aplicado a objetos de valor?" Desculpe pela confusão!

EDITAR: Para esclarecer, não estou perguntando sobre os tipos de valor CLR (vs tipos de referência). Estou perguntando sobre o conceito DDD de nível mais alto de objetos de valor.

Por exemplo, aqui está uma maneira hack-ish de implementar tipos de valor imutáveis para o Entity Framework:http://rogeralsing.com/2009/05/21/entity-framework-4-immutable-value-objects. Basicamente, ele apenas torna todos os levantadores privados. Por que enfrentar o problema de fazer isso?

questionAnswers(6)

yourAnswerToTheQuestion