Операторы C#

Обновлен: Июль 2008

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

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

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

Операторы

Основные

x.y

f(x)

a[x]

x++

x--

new

typeof

checked

unchecked

->

Унарные

+

-

!

~

++x

--x

(T)x

true

false

&

sizeof

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

*

/

%

Аддитивные

+

-

Сдвиг

<<

>>

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

<

>

<=

>=

is

as

Операторы равенства

==

!=

Логическое AND

&

Логическое XOR

^

Логическое OR

|

Условное AND

&&

Условный оператор OR

||

Условное

?:

Присваивание

=

+=

-=

*=

/=

%=

&=

|=

^=

<<=

>>=

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

??

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

Оператор => (Справочник по C#)

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

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

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

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

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

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

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

См. также

Задачи

Пример перегрузки оператора

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

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

Ссылки

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

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

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

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

Visual C#

Журнал изменений

Дата

Журнал изменений

Причина

Июль 2008

Перемещенный оператор ?? из категории назначения согласно пользовательскому предложению.

Исправление ошибки содержимого.