Для каждого определённого в C# типа существует собственный набор операций, определённых на множестве значений этого типа.
Эти операции определяют диапазон возможных преобразований, которые могут быть осуществлены над элементами множеств значений типа. Несмотря на специфику разных типов, в C# существует общее основание для классификации соответствующих множеств операций. Каждая операция является членом определённого подмножества операций и имеет собственное графическое представление.
Общие характеристики используемых в C# операций представлены ниже.
| Категории операций
| Операции
|
| Arithmetic
| + - * / %
|
| Логические (boolean и побитовые)
| & | ^ ! ~ && ||
|
| Строковые (конкатенаторы)
| +
|
| Increment, decrement
| ++ --
|
| Сдвига
| >> <<
|
| Сравнения
| == != < > <= >=
|
| Присвоения
| = += -= *= /= %= &= |= ^= <<= >>=
|
| Member access
| .
|
| Индексации
| []
|
| Cast (приведение типа)
| ()
|
| Conditional (трёхоперандная)
| ?:
|
| Delegate concatenation and removal
| + -
|
| Создания объекта
| new()
|
| Type information
| is sizeof typeof
|
| Overflow exception control (управление исключениями)
| checked unchecked
|
| Indirection and Address (неуправляемый код)
| * -> [] &
|
Так вот на основе элементарных (первичных) выражений с использованием этих самых операций и дополнительных разделителей в виде открывающихся и закрывающихся скобочек формируются выражения всё более сложной структуры. Кроме того, при создании, трансляции, а, главное, на стадии выполнения (определения значения выражения) учитываются следующие обстоятельства:
§ приоритет операций,
§ типы операндов и приведение типов.