В C#, переменные делятся на следующие типы:
Переменным типа Значение может быть присвоено значение непосредственно. Они содержаться в классе System.ValueType.
Переменные типа Значение содержат данные. Например int, char, float, содержат целые числа, символы и числа с плавающей запятой. Когда вы объявляете тип int, система выделяет память для хранения значения.
В следующей таблице перечислены доступные типы значения в C# 2010:
Тип | Представление | Диапазон | Значение по умолчанию |
---|---|---|---|
bool | Boolean value | True или False | False |
byte | 8-bit unsigned integer | от 0 до 255 | 0 |
char | 16-bit Unicode character | от U +0000 до U +ffff | '\0' |
decimal | 128-bit precise decimal values with 28-29 significant digits | (от -7.9 x 1028 до 7.9 x 1028) / 100 to 28 | 0.0M |
double | 64-bit double-precision floating point type | от (+/-)5.0 x 10-324 до (+/-)1.7 x 10308 | 0.0D |
float | 32-bit single-precision floating point type | от -3.4 x 1038 до + 3.4 x 1038 | 0.0F |
int | 32-bit signed integer type | от -2,147,483,648 до 2,147,483,647 | 0 |
long | 64-bit signed integer type | от -923,372,036,854,775,808 до 9,223,372,036,854,775,807 | 0L |
sbyte | 8-bit signed integer type | от -128 до 127 | 0 |
short | 16-bit signed integer type | от -32,768 до 32,767 | 0 |
uint | 32-bit unsigned integer type | от 0 до 4,294,967,295 | 0 |
ulong | 64-bit unsigned integer type | от 0 до 18,446,744,073,709,551,615 | 0 |
ushort | 16-bit unsigned integer type | от 0 до 65,535 | 0 |
Чтобы получить точный размер типа или переменной на конкретной платформе, вы можете использовать метод sizeof. Выражение sizeof(type) возвращает размер хранения объекта или типа в байтах. Ниже приведен пример получения размера типа int на любом устройстве:
namespace DataTypeApplication
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Size of int: {0}", sizeof(int));
Console.ReadLine();
}
}
}
Если приведенный выше код откомпилирован и выполнен, он приводит к следующему результату:
Size of int: 4
Тип Ссылка не содержат фактические данные, хранящиеся в переменной, но они содержат ссылки на переменные.
Другими словами они ссылаются на ячейку памяти. Более чем одну переменную типа ссылка типа можно отнести к ячейке памяти. Если данные в ячейке памяти изменяется посредством одной из переменных, другая переменная автоматически отражает это изменение значения. Примеры ссылочного типа: object, dynamic и string.
Тип Object является основным классом для всех типов данных в C# Common Type System(CTS). Тип Object содержится в System.Object class. Итак тип object может иметь значение любых других типов, типов значений, ссылочных типов, предопределенных или пользовательских типов. Тем не менее, прежде чем присваивать значение, оно должно быть преобразовано.
Когда тип Значение преобразуется в тип object, это называется boxing и наоборот, когда тип object преобразуется в тип Значение это называется unboxing.
object obj;
obj = 100; // это boxing
Вы можете хранить любые типы значений в переменной типа dynamic. Проверка типов для этих типов переменных происходит во время выполнения.
Синтаксис объявления типа dynamic:
dynamic <variable_name> = value;
Например,
dynamic d = 20;
Тип dynamic похож на тип object за исключением того, что проверка типов для переменной типа object происходит при компиляциии, в то время как для переменных типа dynamic при работе программы.
Тип String позволяет назначить любую строку в качестве значения переменной. Тип string содержиться в System.String class. Он является производным от типа object. Значения для типа string могут быть назначены с помощью строковых литералов в двух формах: кавычки и @кавычки.
Например,
String str = "Строка";
A @quoted string literal looks like:
@"Строка";
Пользовательские ссылочные типы: class, interface, или delegate.
Переменные типа Указатель хранят в памяти адрес другого типа. Указатели в C# имеют теже свойства что и в C или C++.
Синтаксис объявления типа Указатель:
type* identifier;
Например,
char* cptr;
int* iptr;