Immutability rocks, right? When a type is immutable, it's usually easier to reason about your code, easier to share data safely, and easier to make money ooze from every USB port. That's the promise, at least. I heard an F# developer say it, so it must be true. Unfortunately, when a language or platform isn't designed to encourage immutability, immutability can introduce its own pain points - and sometimes they can be subtle. Come with me on a journey of exploring different options for implementing immutability in C#, see how it's become somewhat simpler over the various versions, and consider what the future might have in store.