によって Таня Михайлова 6年前.
350
もっと見る
В 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: хранит одиночный символ в кодировке Unicode и занимает 2 байта. Представлен системным типом System.Char. Этому типу соответствуют символьные литералы
Для представления чисел с плавающей точкой высокой точности предусмотрен также десятичный тип decimal, который предназначен для применения в финансовых расчетах. Этот тип имеет разрядность 128 бит для представления числовых значений в пределах от 1Е-28 до 7,9Е+28.
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: хранит значение true или false (логические литералы). Представлен системным типом System.Boolean
Типы с плавающей точкой позволяют представлять числа с дробной частью.
В C# имеются две разновидности типов данных с плавающей точкой: float и double. Они представляют числовые значения с одинарной и двойной точностью соответственно.
double: хранит число с плавающей точкой от ±5.0*10-324 до ±1.7*10308 и занимает 8 байта. Представлен системным типом System.Double
float: хранит число с плавающей точкой от -3.4*1038 до 3.4*1038 и занимает 4 байта. Представлен системным типом System.Single
Вероятно, самым распространенным в программировании целочисленным типом является тип int.
Переменные типа int нередко используются для управления циклами, индексирования массивов и математических расчетов общего назначения.
Когда же требуется целочисленное значение с большим диапазоном представления чисел, чем у типа int, то для этой цели имеется целый ряд других целочисленных типов.
ulong: хранит целое число от 0 до 18 446 744 073 709 551 615 и занимает 8 байт. Представлен системным типом System.UInt64
long: хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт. Представлен системным типом System.Int64
uint: хранит целое число от 0 до 4294967295 и занимает 4 байта. Представлен системным типом System.UInt32
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
в большинстве случаев ведет себя как тип object
. При этом операции, содержащие выражения типа dynamic
, не разрешаются или тип проверяется компилятором. Компилятор объединяет сведения об операции, которые впоследствии будут использоваться для оценки этой операции во время выполнения. В рамках этого процесса переменные типа dynamic
компилируются в переменные типа object
. Таким образом, тип dynamic
существует только во время компиляции, но не во время выполнения.
Тип string
представляет последовательность, состоящую из нуля или более символов в кодировке Юникод. string
является псевдонимом для String в .NET.
Несмотря на то, что string
представляет собой ссылочный тип, операторы равенства (==
и!=
) по определению сравнивают не ссылки, а значения объектов string
. Это делает проверку равенства строк более интуитивно понятной.
Тип object
является псевдонимом Object в .NET. В унифицированной системе типов C# все типы, стандартные и определяемые пользователем, ссылочные типы и типы значений напрямую или косвенно наследуются из Object. Переменным типа object
можно назначать значения любого типа. Если переменная типа значения преобразуется в объект, она считается упакованной. Если переменная типа значения преобразуется в тип значения, она считается распакованной.