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