You just saw how passing around a reference type can yield results you might not expect. The idea behind a value type is that this doesn't happen, because instead of passing around references to be addresses in memory, you're passing around actual values. Doing this will often lead to safer and more predictable code. As if this isn't enough of a benefit on its own, value types are also cheaper to instantiate than reference types. More on that later. We'll focus on the most visible differences first.