First some basics: in .NET there are reference types and value types. Reference types are always accessed through a reference (a pointer actually) while value types, well, are not. The .NET documentation tries to sum it up in one sentence: A data type is a value type if it holds the data within its own [...]