Understanding reference and value types
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 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 in the same class, the memory reference is assigned, not the...