Выражения языка 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}";