Категории: Все - значения

по Таня Михайлова 6 лет назад

355

Типы данных С#

В языке программирования C# существуют две основные категории типов данных: ссылочные типы и типы значений. Ссылочные типы хранят ссылки на данные, а типы значений содержат непосредственно сами данные.

Типы данных С#

Типы данных С#

В C# существуют две разновидности типов: ссылочные типы и типы значений. Переменные типа значений содержат непосредственно данные, а в переменных ссылочных типов хранятся ссылки на нужные данные, которые именуются объектами.

П

Типы значений

В C# определены девять целочисленных типов: char, byte, sbyte, short, ushort, int, uint, long и ulong. Но тип char применяется, главным образом, для представления символов и поэтому рассматривается отдельно. Остальные восемь целочисленных типов предназначены для числовых расчетов

Символы

В C# символы представлены 16-разрядным кодом, который называется юникодом (Unicode).

В юникоде набор символов представлен настолько широко, что он охватывает символы практически из всех естественных языков на свете.

В C# определен тип char, представляющий 16-разрядные значения без знака в пределах от 0 до 65 535. При этом стандартный набор символов в 8-разрядном коде ASCII является подмножеством юникода в пределах от 0 до 127. Следовательно, символы в коде ASCII по-прежнему остаются действительными в C#.

Char

char: хранит одиночный символ в кодировке Unicode и занимает 2 байта. Представлен системным типом System.Char. Этому типу соответствуют символьные литералы

Десятичный тип

Для представления чисел с плавающей точкой высокой точности предусмотрен также десятичный тип decimal, который предназначен для применения в финансовых расчетах. Этот тип имеет разрядность 128 бит для представления числовых значений в пределах от 1Е-28 до 7,9Е+28.


Decimal

decimal: хранит десятичное дробное число. Если употребляется без десятичной запятой, имеет значение от 0 до +/–79 228 162 514 264 337 593 543 950 335; если с запятой, то от 0 до +/–7,9228162514264337593543950335 с 28 разрядами после запятой и занимает 16 байт. Представлен системным типом System.Decimal

Логический тип

Тип bool представляет два логических значения: "истина" и "ложь". Эти логические значения обозначаются в C# зарезервированными словами true и false соответственно.

Следовательно, переменная или выражение типа bool будет принимать одно из этих логических значений. Кроме того, в C# не определено взаимное преобразование логических и целых значений. Например, 1 не преобразуется в значение true, а 0 — в значение false.

BOOL

bool: хранит значение true или false (логические литералы). Представлен системным типом System.Boolean

Типы с плавающей запятой

Типы с плавающей точкой позволяют представлять числа с дробной частью.

В C# имеются две разновидности типов данных с плавающей точкой: float и double. Они представляют числовые значения с одинарной и двойной точностью соответственно.

Double

double: хранит число с плавающей точкой от ±5.0*10-324 до ±1.7*10308 и занимает 8 байта. Представлен системным типом System.Double

Float

float: хранит число с плавающей точкой от -3.4*1038 до 3.4*1038 и занимает 4 байта. Представлен системным типом System.Single

Целочисленные типы

Вероятно, самым распространенным в программировании целочисленным типом является тип int.

Переменные типа int нередко используются для управления циклами, индексирования массивов и математических расчетов общего назначения.

Когда же требуется целочисленное значение с большим диапазоном представления чисел, чем у типа int, то для этой цели имеется целый ряд других целочисленных типов.


Ulong:

ulong: хранит целое число от 0 до 18 446 744 073 709 551 615 и занимает 8 байт. Представлен системным типом System.UInt64

Long

long: хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт. Представлен системным типом System.Int64

Uint

uint: хранит целое число от 0 до 4294967295 и занимает 4 байта. Представлен системным типом System.UInt32

Sbyte

sbyte: хранит целое число от -128 до 127 и занимает 1 байт. Представлен системным типом System.SByte

Int:

int: хранит целое число от -2147483648 до 2147483647 и занимает 4 байта. Представлен системным типом System.Int32. Все целочисленные литералы по умолчанию представляют значения типа int

Short

short: хранит целое число от -32768 до 32767 и занимает 2 байта. Представлен системным типом System.Int16

Ushort

ushort: хранит целое число от 0 до 65535 и занимает 2 байта. Представлен системным типом System.UInt16

Ссылочный тип

Ссылочный тип содержит указатель на другую область памяти, содержащую данные. 

Две переменные ссылочного типа могут ссылаться на один и тот же объект, поэтому может случиться так, что операции над одной переменной затронут объект, на который ссылается другая переменная. Каждая переменная типа значения имеет собственную копию данных, и операции над одной переменной не могут затрагивать другую



Dynamic

Тип dynamic в большинстве случаев ведет себя как тип object. При этом операции, содержащие выражения типа dynamic, не разрешаются или тип проверяется компилятором. Компилятор объединяет сведения об операции, которые впоследствии будут использоваться для оценки этой операции во время выполнения. В рамках этого процесса переменные типа dynamic компилируются в переменные типа object. Таким образом, тип dynamic существует только во время компиляции, но не во время выполнения.

String

Тип string представляет последовательность, состоящую из нуля или более символов в кодировке Юникод. string является псевдонимом для String в .NET.

Несмотря на то, что string представляет собой ссылочный тип, операторы равенства (== и!=) по определению сравнивают не ссылки, а значения объектов string. Это делает проверку равенства строк более интуитивно понятной.

Object

Тип object является псевдонимом Object в .NET. В унифицированной системе типов C# все типы, стандартные и определяемые пользователем, ссылочные типы и типы значений напрямую или косвенно наследуются из Object.  Переменным типа object можно назначать значения любого типа. Если переменная типа значения преобразуется в объект, она считается упакованной. Если переменная типа значения преобразуется в тип значения, она считается распакованной.

подтема