The C# typing system contains the following categories:
Variables of the value types store data, while those of the reference types store references to the actual data. Reference types are also referred to as objects. Pointer types can be used only in unsafe mode.
It is possible to convert a value type to a reference type and vice versa, by using boxing and unboxing.
This section also introduces the void type.