Поделиться через


Операторы 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#