11.1 Value types
A value type is either a struct type or an enumeration type. C# provides a
set of predefined struct types
called the simple types. The simple types are identified through reserved
words.
value-type:
struct-type
enum-type
struct-type:
type-name
simple-type
simple-type:
numeric-type
bool
numeric-type:
integral-type
floating-point-type
decimal
integral-type:
sbyte
byte
short
ushort
int
uint
long
ulong
char
C# LANGUAGE SPECIFICATION
90
floating-point-type:
float
double
enum-type:
type-name
All value types implicitly inherit from class object. It is not possible
for any type to derive from a value
type, and value types are thus implicitly sealed (§17.1.1.2).
A variable of a value type always contains a value of that type. Unlike
reference types, it is not possible for
a value of a value type to be null, or to reference an object of a more
derived type.
Assignment to a variable of a value type creates a copy of the value being
assigned. This differs from
assignment to a variable of a reference type, which copies the reference
but not the object identified by the
reference.