Встроенные базовые типы
C# предоставляет стандартный набор встроенных типов для представления целых чисел, вещественных чисел с плавающей запятой, логических выражений, текстовых символов, десятичных значений и других.
В следующей таблице перечислены базовые типы, предоставляемые в.NET Framework, кратко описывается каждый тип и указывается соответствующий тип в C#.
Описание | .Net | C# |
8-разрядное целое число без знака. | Byte | byte |
8-разрядное целое число со знаком. | SByte | sbyte |
16-разрядное целое число со знаком | Int16 | short |
32-разрядное целое число со знаком | Int32 | int |
64-разрядное целое число со знаком | Int64 | long |
16-разрядное целое число без знака | UInt16 | ushort |
32-разрядное целое число без знака | UInt32 | uint |
64-разрядное целое число без знака | UInt64 | ulong |
32-разрядное с плавающей точкой с обычной точностью | Single | float |
64-разрядное с плавающей точкой с двойной точностью | Double | double |
Логическое значение (true или false) | Boolean | bool |
Символ Юникода (16-разрядный) | Char | char |
128-разрядное десятичное целое | Decimal | decimal |
Корень иерархии объектов | Object | object |
Строка символов Юникода фиксированной длины | String | string |
В дополнение к базовым типам данных пространство имен System содержит более 100 классов — от классов для обработки исключений до классов, которые работают с основными механизмами среды выполнения, такими как домены приложений и сборщик мусора.
Типы целых чисел
В таблице представлены размеры и диапазоны целых типов, которые составляют подмножество простых типов.
Тип | Диапазон | Размер |
sbyte | От -128 до 127 | 8-разрядное целое число со знаком |
byte | От 0 до 255 | 8-разрядное целое число без знака |
char | от U+0000 до U+ffff | 16-разрядный символ Юникода |
short | От -32 768 до 32 767 | 16-разрядное целое число со знаком |
ushort | От 0 до 65 535 | 16-разрядное целое число без знака |
int | От -2 147 483 648 до 2 147 483 647 | 32-разрядное целое число со знаком |
uint | От 0 до 4 294 967 295 | 32-разрядное целое число без знака |
long | От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | 64-разрядное целое число со знаком |
ulong | От 0 до 18 446 744 073 709 551 615 | 64-разрядное целое число без знака |
Типы чисел с плавающей запятой
|
В таблице представлены приблизительные диапазоны типов с плавающей запятой.
Тип | Приблизительный диапазон | Точность |
float | От ±1,5e−45 до ±3,4e38 | 7 знаков |
double | От ±5,0e−324 до ±1,7e308 | 15-16 знаков |
Значения типов по умолчанию
В приведенной ниже таблице показаны значения по умолчанию типов значений, возвращаемые конструкторами по умолчанию.
Помните, что в C# не допускается использование неинициализированных переменных.
Тип | Значение по умолчанию |
bool | false |
byte | |
char | '\0' |
decimal | 0,0M |
double | 0,0D |
float | 0,0F |
int | |
long | 0L |
sbyte | |
short | |
uint | |
ulong | |
ushort |
Преобразования типов
Все вычисления происходят с использованием типа double. Другие типы чисел могут применяться для уменьшения занимаемой памяти. При их использовании перед вычислением они преобразуются в тип double. Различают преобразования:
· Неявные преобразования используются для совместимых типов. Значения источника полностью отображаются приемником. Например, при преобразовании int в double (int – подмножество double). Такое преобразование выполняется автоматически, его не надо заказывать.
· Явные преобразования используются для несовместимых типов. Например, при преобразовании double в int (int – подмножество double). Значения источника не полностью отображаются приемником. Если типы несовместимы, но ошибка допустима, то преобразование возможно, но его нужно явно заказать: для этого перед преобразуемым выражением добавляется префикс идентификации конечного типа (в круглых скобках). Например,
|
double db=12.94;
int i;
i = (int) db;
Форматирование численных типов
Все числа выводятся в консоль в виде строк символов. Потому перед выводом применяется форматирование. Запись формата:
(m:<Буква>d).
Спецификаторы: m – число позиций всего, d - число позиций дробной части (мантиссы для чисел со степенью).
Если спецификаторы пропускаются, то используются их значения по умолчанию. Предусмотрены 9 форматов.
Формат | Тип числа | Пример | d по умолчанию | |
Общий | G | m:G | По факту | |
Фикс. Точка | F | m:Fd | ||
С возвратом | R | m:Rd | По факту | |
Число | N | m:Nd | ||
Со степенью | E | m:Ed | ||
Десятичное | D | Целое | m:D | |
Денежный | C | m:Cd | ||
Проценты | P | 0:Pd | ||
X | Целое / бз | m:X |
Если целая часть не умещается в заданных позициях, то осуществляется расширение целой части.
Если дробная часть не умещается в заданных позициях, то в форматах G и R осуществляется расширение дробной части. В остальных используется ее округление.
В денежном формате C добавляется символ p. Если число целое, то дробные разряды заполняются нулями. Целая часть отображается с разделением на денежные группы по три символа. Если d пропускается, по умолчанию d=2.
В процентном формате P число умножается на 100, добавляется символ %. Целая часть отображается с разделеним на денежные группы по три символа.
|
Символы char
Тип Char – это один символ в коде unicod UTF-16. Символ помещается в одиночные кавычки. Синтаксис объявления:
Char Имя = ‘ Символ ’;
Символ может быть:
· Буква кодировки ANSI.
· Escape-знак. Применяется для ввода управляющих символов кодировки ANSI. Например, \n (новая строка), \t (табуляция).
· Символ unicod - \u +xxxx, где хххх – 16 ричные симолы.
char МойСимвол = ‘A ‘; - символ A.
char ЯпонСимвол = ‘\u30ad ‘; - символ из японской азбуки Катакана.
Определены следующие Escape-последовательности строк
Escape-последовательность | Имя символа | Кодировка Юникода |
\' | Одинарная кавычка | 0x0027 |
\" | Двойная кавычка | 0x0022 |
\\ | Обратная косая черта | 0x005C |
\0 | Null | 0x0000 |
\a | ALERT | 0x0007 |
\b | BACKSPACE | 0x0008 |
\n | Новая строка | 0x000A |
\r | Возврат каретки | 0x000D |
\t | Горизонтальная табуляция | 0x0009 |
\u | Escape-последовательность unicod | \u0041 = ‘A’ |
\v | Вертикальная табуляция | 0x000B |
\x | Escape-последовательность unicod аналогична "\u", за исключением строк с переменной длиной. | \x0041 = ‘A’ |
Строки string
Строка является объектом типа String, значением которого является текст. Тип данных string (все буквы строчные) является псевдонимом класса String. Внутренне объект типа String хранится в коллекции объектов Char, каждый из которых представляет один символ Юникода в UTF-16.
Строка C# представляет собой группу одного или нескольких знаков, заключенных в двойные кавычки и объявленных с помощью ключевого слова string,
string greeting = "Hello, World!";
Строковые объекты являются неизменяемыми: после создания их нельзя изменить.
Перечисления
C# позволяет создать собственный набор именованных констант с помощью ключевого слова enum. Эти типы данных позволяют объявить набор имен или других значений литералов, определяющих все возможные значения, которые могут быть назначены переменной.
Например, если в программе ведется работа с днями недели, может потребоваться создать новый тип с именем DayOfWeek. Затем можно объявить новую переменную типа DayOfWeek, а затем присвоить ей значение. Использование этого типа данных способствует повышению удобочитаемости кода, кроме того, снижается вероятность назначения переменной недопустимого или неожиданного значения.
public enum DayOfWeek
{
Sunday = 0,
Monday = 1,
Tuesday = 2,
Wednesday = 3,
Thursday = 4,
Friday = 5,
Saturday = 6
}
class Program
{
static void Main()
{
DayOfWeek day = DayOfWeek.Monday;
int i = (int) DayOfWeek.Monday;
System.Console.WriteLine(day); // displays Monday
System.Console.WriteLine(i); // displays 1
}
}
Тип DateTime
Значения времени измеряются в 100-наносекундных единицах, называемых тактами, и точная дата представляется числом тактов с 00:00 1 января 0001 года н. э. по календарю GregorianCalendar. Например, значение тактов, равное 31241376000000000L, представляет пятницу 1 января 0100 года 00:00:00. Значение DateTime всегда выражается в контексте явно определенного или заданного по умолчанию календаря.