Indirection measures steps needed to load a value. Reference types add indirection. They point to another memory location. Value types do not. They are self-contained, often in the bytes on the evaluation stack.
First, this program shows an int value type. Please notice that no constructor is used on the int. It is stored entirely within stack memory space. The managed heap is not touched. No allocation occurs there.
Also:
When a number is added to the int, that memory location's value is changed. No new int is created as a result of the addition.
Tip:
Using value types, instead of reference types, is often a good optimization. There are counterexamples: large structs can be slower.
Optimizations