C# data types
In C#, variables are divided into the following types:
Value types (Value types)
Reference types (Reference types)
Pointer types (Pointer types)
Value types (Value types)
Value type variables can Assigned directly to a value. They are derived from class System.ValueType.
Value types contain data directly. For example, int, char, and float store numbers, letters, and floating-point numbers respectively. When you declare an int type, the system allocates memory to store the value.
The following table lists the value types available in C# 2010:
Type | Description | Range | Default value |
---|
bool | Boolean value | True or False | False |
byte | 8-bit unsigned integer | 0 to 255 | 0 |
char | 16-bit Unicode characters | U +0000 to U +ffff | '\0' |
decimal | 128 digit-accurate decimal value, 28-29 significant digits | (-7.9 x 1028 to 7.9 x 1028)
/ 100 to 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 | -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 | -923,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 |
To get the exact size of a type or variable on a specific platform, you can use the sizeof method. The expression sizeof(type) yields the storage size in bytes of the object or type. The following example obtains the storage size of int type on any machine:
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
When the above code is compiled and executed, it produces the following results:
Reference types
Reference types do not contain the actual data stored in the variable, but they contain a reference to the variable.
In other words, they refer to a memory location. When using multiple variables, a reference type can point to a memory location. If the data at a memory location is changed by one variable, the other variables automatically reflect this change in value. The built-in reference types are: object, dynamic and string.
Object (Object) type
The Object (Object) type is the ultimate base class for all data types in the C# Common Type System (CTS). Object is an alias for the System.Object class. So the Object type can be assigned a value of any other type (value type, reference type, predefined type or user-defined type). However, before assigning the value, a type conversion is required.
When a value type is converted to an object type, it is called boxing; on the other hand, when an object type is converted to a value type, it is called unboxing.
object obj;
obj = 100; // This is boxing
Dynamic type
You can store any type The value of is in the dynamic data type variable. Type checking of these variables occurs at runtime.
Syntax for declaring dynamic types:
dynamic <variable_name> = value;
For example:
Dynamic types are similar to object types, but the type checking of object type variables occurs at compile time, while the type checking of dynamic type variables occurs at run time.
String type
The String type allows you to assign any string value to a variable. The String type is an alias of the System.String class. It is derived from the Object type. Values of type String can be assigned in two forms: quotes and @quotes.
For example:
String str = "w3cschool.cc";
A @quote string:
C# string You can add @ in front of the string (called a "verbatim string") to treat the escape character (\) as an ordinary character, for example:
string str = @"C:\Windows";
Equivalent to:
string str = "C:\\ Windows";
@ You can arbitrarily break newlines in the string. Newline characters and indented spaces are included in the length of the string.
string str = @"<script type=""text/javascript"">
<!--
-->
</script> ;";
User-defined reference types include: class, interface or delegate. We will discuss these types in future chapters.
Pointer types (Pointer types)
Pointer type variables store another type of memory address. Pointers in C# have the same functionality as pointers in C or C++.
Syntax for declaring pointer types:
For example:
We will discuss pointer types in the chapter "Unsafe Code".