Операторы C#

Язык C# предоставляет большой набор операторов, которые представляют собой символы, определяющие операции, которые необходимо выполнить с выражением. Операции над целыми типами, такие как ==, !=, <, >, <=, >=, binary +, binary -, ^, &, |, ~, ++, --и sizeof() обычно разрешены в перечислениях. Кроме того, многие операторы могут перегружаться пользователем. Таким образом, их значение при применении к пользовательскому типу меняется.

В следующей таблице представлен список операторов C#, сгруппированных в порядке приоритета. Операторы в каждой группе имеют одинаковый приоритет.

Категория оператора

Операторы

Основные

x.y

f(x)

a[x]

x++

x--

new;

typeof

checked

unchecked

default(T)

delegate

sizeof

->

Унарный

+x

-x

!x

~x

++x

--x

(T)x

await

&x

*x

Мультипликативные

x * y

x / y

x % y

Аддитивные

x + y

x - y

Сдвиг

x << y

x >> y

Относительные и тестирующие тип

x < y

x > y

x <= y

x >= y

является

as

Равенство

x == y

x != y

Логическое И

x & y

Логическое исключающее XOR

x ^ y

Логическое ИЛИ

x | y

Условное AND

x && y

Условное OR

x || y

Поддержка значения NULL

x ?? y

Условная

?:

Присвоение и лямбда-выражение

x = y

x += y

x -= y

x *= y

x /= y

x %= y

x &= y

x |= y

x ^= y

x <<= y

x >>= y

=>

Арифметическое переполнение

Арифметические операторы (+, -, *, /) могут выдавать результаты, находящиеся за пределами интервала возможных величин используемого числового типа. С подробными сведениями следует знакомиться в разделе, посвященном определенному оператору, но, в общем, действуют следующие правила.

  • В случае переполнения целочисленной арифметической операции либо вызывается исключение OverflowException, либо отбрасываются старшие двоичные разряды результата. В случае деления целого числа на ноль всегда вызывается исключение DivideByZeroException.

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

  • В случае переполнения десятичной арифметической операции всегда вызывается исключение OverflowException. В случае десятичных чисел деление на ноль всегда вызывает исключение DivideByZeroException.

При возникновении целочисленного переполнения событие зависит от контекста выполнения, который может иметь значение checked или unchecked (проверяемый или непроверяемый). В случае проверяемого контекста вызывается исключение OverflowException. В случае непроверяемого контекста старшие разряды результата отбрасываются и выполнение программы продолжается. Таким образом, язык C# дает возможность выбора — обрабатывать или игнорировать переполнение.

Кроме арифметических операторов переполнение могут вызывать приведения целочисленного типа к целочисленному типу, например приведение типа long к типу int. На такие приведения распространяется проверяемое или непроверяемое выполнение. При этом битовые операции и операции сдвига никогда не вызывают переполнения.

См. также

Ссылки

Перегружаемые операторы (Руководство по программированию в C#)

Ключевые слова C#

Основные понятия

Руководство по программированию на C#

Другие ресурсы

Справочник по C#

Visual C#