Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры C#.doc
Скачиваний:
16
Добавлен:
22.09.2019
Размер:
472.58 Кб
Скачать

4. Обзор встроенных типов данных c#. Применение встроенной функциональности типов данных.

В С# существует множество встроенных или простых типов.Любой встроенный тип С# это псевдоним, для системного типа определённого в простравнстве имён System

Простые типы С# и системные типы

Простой тип С#

Системный тип

Диапазон значений

Описание типа

Sbyte

SByte

-128…+128

Число со знаком занимает 1 байт

Byte

Byte

0…255

Чісло без знака занимает 1 байт

short

Int16

-32768…32667

Короткое 16 битовое число со знаком (2байта)

Ushort

Uint16

0…65535

короткое 16 битовое число без знака

Int

Int32

-2147483648…2147483647

Целое 32 битовое число со знаком

uint

Uint32

0…4294967295

Целое 32 битовое без знака целое число

long

Uint64

0…18446744073709551615

Знаковое 64-битное целое число(8 байт)

ulong

0…2^64-1

64 битное 8 байтное целое число без знака

char

Char

2 байта для расширенной таблицы кодов символов

Один 16 битовый символ Юникод

Float

Single

-3.40282e+038…3.40282e+038

Вещественное число одинарной точности с плавающей запятой, занимающей 32 бита или 4 байта

double

Double

-1.79769e+308…1.79769e+308

Вещественное число двойной точности с плавающей запятой занимает 64 бита либо 8 байт

Bool

Boolean

True or False

Логические данные

decimal

Decimal

10^0…10^28

Число фиксированной точности или 12 байт

String

String

Ограниченно системной памятью

Строка символов

Object

Object

Практически всё что угодно. Все типы происходят от класса System.Object поэтому объектом является всё

У всех встроенных типов есть значение по умолчанию (0-для числовых, False-bool, null –string, object; но в методах классов переменные нужно инициализировать)

Системные имена называют также структурами типов значений. Структуры имеют методы. Например Int32 - Parse(string) преобразует строку символов string в число.

Преобразования типов

Если при вычислении выражения операнды имеют разные типы, то возникает необходимость приведения их к одному типу. Такая необходимость возникает и тогда, когда операнды имеют один тип, но он несогласован с типом операции. Например, при выполнении сложения операнды типа byte должны быть приведены к типу int, поскольку сложение не определено над байтами. При выполнении присваивания x=e тип источника e и тип цели x должны быть согласованы. Аналогично, при вызове метода также должны быть согласованы типы фактического и формального аргументов.

Рассмотрим преобразования при работе с числовыми типами. Заметим, что преобразование типов бывает неявным и явным. Неявное преобразование (implicit conversion) выполняется автоматически. При выполнении данного преобразования никогда не происходит потеря точности или переполнение, так как множество значений целевого типа включает множества значений приводимого типа. Для явного преобразования (explicit conversion) требуется применять оператор приведения в форме (<целевой тип>)<выражение>. При выполнении явного преобразования ответственность за его корректность возлагается на программиста.

Для более гибкого контроля значений, получаемых при работе с числовыми выражениями, в языке C# предусмотрено использование контролируемого и неконтролируемого контекстов. Контролируемый контекст объявляется в форме checked <программный блок>, либо как оператор checked(<выражение>). Если при преобразовании типов выражение в контролируемом контексте получает значение, выходящие за пределы целевого типа, то генерируется либо ошибка компиляции (для константных выражений), либо ошибка времени выполнения (для выражений с переменными).

При использовании неконтролируемого контекста выход за пределы целевого типа ведет к автоматическому «урезанию» результата либо путем отбрасывания бит (целые типы), либо путем округления (вещественные типы). Неконтролируемый контекст объявляется в форме unchecked <программный блок>, либо как оператор unchecked(<выражение>).