Выражения языка C#
 
                        
                    Код приложений в C# состоит из операторов, состоящих из выражений, операторов, ключевых слов. В данной статье мы рассмотрим операторы языка C#
Выражения языка:
| Категория | Выражение | Описание | 
| Основные | x.m | Доступ к членам | 
| x(...) | Вызов методов и делегатов | |
| x[...] | Доступ к массиву и индексатору | |
| x++ | Постфиксное приращение | |
| x-- | Постфиксное уменьшение | |
| new T(...) | Создание объекта и делегата | |
| new T(...){...} | Создание объекта с использованием инициализатора | |
| new {...} | Инициализатор анонимного объекта | |
| new T[...] | Создание массива | |
| typeof(T) | Получение объекта System.Type для T | |
| checked(x) | Вычисление выражения в контексте checked | |
| unchecked(x) | Вычисление выражения в контексте unchecked | |
| default(T) | Получение значения по умолчанию типа T | |
| delegate {...} | Анонимная функция (анонимный метод) | |
| Унарные | +x | Идентификация | 
| -x | Отрицание | |
| !x | Логическое отрицание | |
| ~x | Побитовое отрицание | |
| ++x | Префиксное приращение | |
| --x | Префиксное уменьшение | |
| (T)x | Явное преобразование x к типу T | |
| Мультипликативные | x * y | Умножение | 
| x / y | Деление | |
| x % y | Остаток | |
| Аддитивные | x + y | Сложение, объединение строк, объединение делегатов | 
| x – y | Вычитание, удаление делегата | |
| Операторы сдвига | x << y | Поразрядный сдвиг влево | 
| x >> y | Поразрядный сдвиг вправо | |
| Операторы проверки отношения и типа | x < y | Меньше | 
| x > y | Больше | |
| x <= y | Меньше или равно | |
| x >= y | Больше или равно | |
| x is T | Возвращает true, если x имеет тип T; в противном случае возвращает false | |
| x as T | Возвращает значение x, типизированное как T, или null, если x имеет тип, отличный от T | |
| Равенство | x == y | Равно | 
| x != y | Не равно | |
| Логическое AND | x & y | Целое побитовое AND, логическое AND | 
| Исключающее XOR | x ^ y | Целое побитовое исключающее XOR, логическое исключающее XOR | 
| Логическое OR | x | y | Целое побитовое OR, логическое OR | 
| Условное AND 
 | x && y | y вычисляется только в том случае, если x имеет значение true | 
| Условное OR | x || y | y вычисляется только в том случае, если x имеет значение false | 
| Слияние с null | X ?? y | Если x имеет значение null, вычисляется y; в противном случае вычисляется x | 
| Условные | x ? y : z | Если x имеет значение true, вычисляется y; если x имеет значение false, вычисляется z | 
| Присваивание или анонимная функция | x = y | Присваивание | 
| x оператор= y | Составное присваивание; поддерживаются следующие операторы: *= /= %= += -= <<= >>= &= ^= |= | |
| (T x) => y | Анонимная функция (лямбда-выражение) | 
Новые возможности языка C# 6:
Инициализация свойств:
public int Property { get; set; } = 151;
public int Property2 { get; } = 322;
Объявление методов и свойств с помощью лямбда выражений:
Методы:
старый вариант:
public bool TestMethod(int version)
        {
            return version == 5;
        }
Запись в C# 6
public bool TestMethod(int version) => version == 5;
Свойства:
старый вариант:
public string TestProperty
        {
            get { return "my testText"; }
        }
Запись в C# 6
public string TestProperty => "my testText";
Фильтры исключений:
Фильтры исключений добавляют условия, при которых срабатывают блоки catch(). вот синтаксис и пример:
   try
   {
   }
   catch (Exception ex) when (ex.Message == "my test error")
   {                
   }
Async в блоках catch и finally
Начиная с 6 версии C#, разрешено использовать асинхронные функции в блоках catch и finally.
Интерполяция строк
Переменные теперь возможно указывать прямо внутри строк
long number = 1123432;
var str1 = $"number: {number}";
                