Other than keywords and initial field values, we haven't seen much difference between classes and structs so far. Classes are best suited for grouping together complex actions and data that will change throughout a program; structs are a better choice for simple objects and data that will remain constant for the most part. Besides their uses, they are fundamentally different in one key area—that is, how they are passed, or assigned, between variables. Classes are reference types, meaning that they are passed by reference; structs are value types, meaning that they are passed by value.
Reference types
When the instances of our Character class are initialized, the hero and heroine variables don't actually hold their class information—instead, they hold a reference to where the object is located in the program's memory. If we assigned hero or heroine to another variable, the memory reference is actually assigned, not...