Операторы C#
Обновлен: Июль 2008
Язык C# предоставляет большой набор операторов, которые представляют собой символы, определяющие операции, которые необходимо выполнить с выражением. Обычно в перечислениях допускается использование операций с целочисленными типами, например ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, -- и sizeof(). Кроме того, многие операторы могут перегружаться пользователем. Таким образом, их значение при применении к пользовательскому типу меняется.
В следующей таблице представлен список операторов C#, сгруппированных в порядке приоритета. Операторы в каждой группе имеют одинаковый приоритет.
Категория оператора |
Операторы |
---|---|
Основные |
|
Унарные |
|
Мультипликативные |
|
Аддитивные |
|
Сдвиг |
|
Относительные и тестирующие тип |
|
Операторы равенства |
|
Логическое AND |
|
Логическое XOR |
|
Логическое OR |
|
Условное AND |
|
Условный оператор OR |
|
Условное |
|
Присваивание |
|
Поддержка значения NULL |
|
Лямбда-оператор |
Арифметическое переполнение
Арифметические операторы (+, -, *, /) могут выдавать результаты, находящиеся за пределами интервала возможных величин используемого числового типа. С подробными сведениями следует знакомиться в разделе, посвященном определенному оператору, но, в общем, действуют следующие правила.
В случае переполнения целочисленной арифметической операции либо вызывается исключение OverflowException, либо отбрасываются старшие двоичные разряды результата. В случае деления целого числа на ноль всегда вызывается исключение DivideByZeroException.
В случае чисел с плавающей запятой при переполнении арифметической операции или делении на ноль исключение никогда не вызывается, потому что типы чисел с плавающей запятой основаны на стандарте IEEE 754 и включают правила для представления бесконечности и нечисловых значений (NaN).
В случае переполнения десятичной арифметической операции всегда вызывается исключение OverflowException. В случае десятичных чисел деление на ноль всегда вызывает исключение DivideByZeroException.
При возникновении целочисленного переполнения событие зависит от контекста выполнения, который может иметь значение checked или unchecked (проверяемый или непроверяемый). В случае проверяемого контекста вызывается исключение OverflowException. В случае непроверяемого контекста старшие разряды результата отбрасываются и выполнение программы продолжается. Таким образом, язык C# дает возможность выбора — обрабатывать или игнорировать переполнение.
Кроме арифметических операторов переполнение могут вызывать приведения целочисленного типа к целочисленному типу, например приведение типа long к типу int. На такие приведения распространяется проверяемое или непроверяемое выполнение. При этом битовые операции и операции сдвига никогда не вызывают переполнения.
См. также
Задачи
Основные понятия
Руководство по программированию в C#
Ссылки
Перегружаемые операторы (Руководство по программированию в C#)
Другие ресурсы
Журнал изменений
Дата |
Журнал изменений |
Причина |
---|---|---|
Июль 2008 |
Перемещенный оператор ?? из категории назначения согласно пользовательскому предложению. |
Исправление ошибки содержимого. |