Datatype are of two types in C# i.e. Value type, reference type, and pointer type.
Value Types
Value type variables can be assigned a value directly. They are derived from the class System.ValueType.
The following are the Value type data types −
| Type | Represents | Range | Default Value |
|---|---|---|---|
| bool | Boolean value | True or False | |
| byte | 8-bit unsigned integer | 0 to 255 | 0 |
| char | 16-bit Unicode character | U +0000 to U +fff | '\0' |
| decimal | 128-bit precise decimal values with 28-29 significant digits | (-7.9 x 1028 to 7.9 x 1028) / 100to 28 | 0.0M |
| double | 64-bit double-precision floating point type | (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 | 0.0D |
| float | 32-bit single-precision floating point type | -3.4 x 1038 to + 3.4 x 1038 | 0.0F |
| int | 32-bit signed integer type | -2,147,483,648 to 2,147,483,647 | 0 |
| long | 64-bit signed integer type | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | 0L |
| sbyte | 8-bit signed integer type | -128 to 127 | 0 |
| short | 16-bit signed integer type | -32,768 to 32,767 | 0 |
| uint | 32-bit unsigned integer type | 0 to 4,294,967,295 | 0 |
| ulong | 64-bit unsigned integer type | 0 to 18,446,744,073,709,551,615 | 0 |
| ushort | 16-bit unsigned integer type | 0 to 65,535 | 0 |
Reference Types
The reference types do not contain the actual data stored in a variable, but they contain a reference to the variables.
The following are the Reference Types in C# −
Object Type − The Object Type is the ultimate base class for all data types in C# Common Type System (CTS).
Dynamic Type − Store any type of value in the dynamic data type variable. Type checking for these types of variables takes place at run-time.
String Type − The String Type allows you to assign any string values to a variable. The string type is an alias for the System.String class