C# supports two kinds of variable types:
Value types. These are the built-in primitive data types, such as char, int, and float, as well as user-defined types declared with struct.
Reference types. Classes and other complex data types that are constructed from the primitive types.