struct C# with Example
A struct type is a value type that is typically used to encapsulate small groups of related variables, such as the coordinates of a rectangle or the characteristics of an item in an inventory. Classes are reference types, structs are value types. using static System.Console; namespace ConsoleApplication1 { struct Point { public int X; public int Y; public override string ToString() { return $"X = {X}, Y = {Y}"; } public void Display(string name) { WriteLine(name + ": " + ToString()); } } class Program { static void Main() { var point1 = new Point {X = 10, Y = 20}; // it's not a reference but value type var point2 = point1; point2.X = 777; point2.Y = 888; point1.Display(nameof(point1)); // point1: X = 10, Y = 20 point2.Display(nameof(point2)); // point2: X = 777, Y = 888 ReadKey(); } } } Structs can also contain constructors, constants, fields, methods, properties, indexers, operators, events, and nested types, although if several such members are required, you should consider making your type a class instead. Some suggestions from MS on when to use struct and when to use class: CONSIDER defining a struct instead of a class if instances of the type are small and commonly short-lived or are commonly embedded in other objects. AVOID defining a struct unless the type has all of the following characteristics: It logically represents a single value, similar to primitive types (int, double, etc.) It has an instance size under 16 bytes. It is immutable. It will not have to be boxed frequently.