I believe C# structs are "value types". They are allocated from stack and passed by value to functions (as opposed to classes that are allocated from heap and a 'pointer' is passed to functions). See ValueObject for more informal description. ---- Related: * ValueObjectsShouldBeImmutable * http://dotgnu.org/pnetlib-doc/System/ValueType.html