Just like C and C++, C# allows structures. However, structures in C# can do a lot more than in C or C++. C# structures can have constructors, properties, private members, methods, and more. In fact, it would seem that structures in C# can do everything that classes can do.
The question then arises “what is the difference between a class and a structure ?”
To be pedantic, the answer is “just the syntax” – the real difference is between an instantiated class (an object) and an instantiated structure (a struct).
- objects are always passed by reference.
- structs are always passed by value.
That’s it! Pass a struct as a parameter to a method and the method will be working on a copy of the struct. Any changes to the struct’s values made by the method will not be reflected in the original struct (unless the struct is passed as a ref parameter, of course).