Операторы C#

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

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

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

Операторы

Основные

x.y

f(x)

a[x]

x++

x--

new;

typeof

checked

unchecked

default(T)

delegate

->

Унарный

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

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

*

/

%

Аддитивные

+

-

SHIFT

<<

>>

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

<

>

<=

>=

имеет значение

as

Равенство

==

!=

Логическое И

&

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

^

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

|

Условное AND

&&

Условное OR

||

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

??

Условная

?:

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

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

=> Лямбда-оператор

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

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

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

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

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

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

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

См. также

Ссылки

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

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

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

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

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

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

Visual C#