Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции все вместе / Lektsia1_Vvedenie.doc
Скачиваний:
6
Добавлен:
20.04.2015
Размер:
357.89 Кб
Скачать

Пример использования оператора unchecked.

Явное преобразование из int к short, где

short

От -32 768 до 32 767

16-разрядное целое число со знаком

System.Int16

int

От -2 147 483 648 до 2 147 483 647

32-разрядное целое число со знаком

System.Int32

int i = 2147483647;

short ixx = unchecked((short)i);

Пример использования оператора checked.

Для неконстантных выражений (выражений, которые вычисляются во время выполнения), не заключенных в операторы или инструкции checked или unchecked, контекстом проверки переполнения по умолчанию является unchecked, если внешние факторы (например, переключатели компилятора и конфигурация среды исполнения) не заставляют установить контекст checked.

Пример.

int i = 2147483647;

short ixx = (short)i;

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

Если размер исходного типа меньше размера конечного, размер исходного значения расширяется до размера конечного типа за счет добавления знака или нулей.

Для преобразований из типа decimal к целому типу исходное значение округляется в сторону нуля до ближайшего целого значения. Результатом преобразования является полученное целое значение.

Пример.

decimal d = 10000.5m;

int i =(int)d;

Console.WriteLine(i);

Для типов с плавающей запятой и типа decimal отсутствует неявное преобразование, поэтому для преобразования между этими двумя типами следует использовать приведение. Пример.

Пример.

decimal myMoney = 99.9m;

double x = (double)myMoney;

Console.WriteLine(x);

Если убрать оператор явного преобразования, то программа завершится с ошибкой

Ошибка 1 Не удается неявно преобразовать тип "decimal" в "double". Существует явное преобразование (возможно, пропущено приведение типов)

Преобразования из double к float.

Значение типа double округляется до ближайшего значения типа float. При переполнении арифметической операции или делении на ноль исключение никогда не вызывается, потому что типы чисел с плавающей запятой основаны на стандарте IEEE 754 и включают правила для представления бесконечности и нечисловых значений (NaN).

Явные преобразования ссылочных типов.

Поддерживаются следующие явные преобразования ссылочных типов:

  • Из object любому другому ссылочному_типу.

  • Из любого типа_класса S к любому типу_класса T, если S является базовым классом для T.

Пользовательские явные преобразования

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

Пример

int numVal = Convert.ToInt32("29");

Преобразования распаковки.

Преобразование распаковки обеспечивает явное преобразование ссылочного_типа к типу_значений.

Пример.

int i = 123;

object box = i;

i = 666;

i = (int)box;

Выражения.

Выражения состоят из операндов и операторов. Операторы в выражении указывают, какие операции производятся с операндами. К операторам относятся, например, +, -, *, / и new. К операндам относятся, например, литералы, поля, локальные переменные и выражения.

Существует три типа операторов.

  • Унарные операторы. У унарного оператора есть только один операнд и оператор может записываться в префиксной форме (например, –x) или постфиксной форме (например, x++).

  • двоичные операторы; У бинарных операторов два операнда и они записываются в виде инфикса (например, x + y).

  • Тернарный оператор. Существует только один тернарный оператор, ?:. В нем три операнда и используется инфиксная запись (c? x: y).

Порядок вычисления операторов в выражении определяется приоритетом и ассоциативностью операторов (§Error: Reference source not found).

Операнды в выражении вычисляются слева направо.

Соседние файлы в папке лекции все вместе