When to Use Struct vs. Class

The key difference is that a class is a reference type and a struct is a value type. Use a struct for small, simple data structures that represent a single value (like Point or Color) and have a size under 16 bytes. For everything else, especially types with complex behavior or larger data, a class is the better choice.

C# Example Code
using System;

// A struct is a value type - good for small, immutable data.
public struct Point
{
    public int X { get; }
    public int Y { get; }

    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
}

// A class is a reference type - good for more complex objects.
public class Rectangle
{
    public Point TopLeft { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
}

public class StructVsClass
{
    public static void Main(string[] args)
    {
        // Structs are copied on assignment
        Point p1 = new Point(10, 20);
        Point p2 = p1; // p2 is a copy of p1
        // Modifying p1 does not affect p2 (if it were mutable)

        // Classes hold references
        Rectangle r1 = new Rectangle { Width = 100 };
        Rectangle r2 = r1; // r2 refers to the SAME object as r1
        r2.Width = 200;

        Console.WriteLine($"p1.X: {p1.X}"); // 10
        Console.WriteLine($"r1.Width: {r1.Width}"); // 200
    }
}