Нововведения в С# 8 - Блог ITVDN
ITVDN: курсы программирования
Видеокурсы по
программированию

Выбери свою IT специальность

Подписка

Нововведения в С# 8

advertisement advertisement

Хотя внимание разработчиков приковано сейчас к таким глобальным вещам, как дефолтная реализация методов интерфейсов, мы хотим поговорить с вами о нюансах новой версии популярного языка программирования С#.

Новые операторы присвоения: &&= и ||=

Начиная с самой первой версии, C# поддерживал комбинирования операторов присвоения с другими операторами. Существует поддержка всех бинарных операторов (а именно - +, -, & и так далее), кроме булевских && и ||. Теперь комбинации типа &&= и ||= дополнят этот список.

Дословно-интерполируемые строки

Дословные строки начинаются на @”. Интерполируемые строки используют $”. Но что, если нам нужно создать дословно-интерполируемую строку? Что нам писать - @$” или  $@”? Сейчас первый вариант работает, но второй выдает ошибку уровня компиляции, что может вызывать некоторые неудобства у многих разработчиков, так как обычно такие нюансы часто забывают.

Суть нововведения заключается в том, что в новой версии можно использовать как первый вариант конструкции, так и второй.

Впрочем, некоторые все равно находят это изменение лишним, так как оно может привести к некоторой фривольности кода и проблемам с единым стилем.

Выражение using структурно соответствует IDisposable

У компилятора C# интересное отношение к интерфейсам. Довольно часто вам не нужно на самом деле реализовывать абстрактный интерфейс для определенных фичей языка. Все, что вам нужно, так это просто реализовать в классе определенный публичный API, что по своей структуре повторяет абстрактный интерфейс.

Классическим примером этого является foreach и IEnumerable. Если класс обладает методом GetEnumerator, возвращающим значение свойства Current и методом MoveNext, тогда вы можете использовать foreach. Сами типы возвращаемых данных не имеют значения, что позволяет таким классам, как List<T>, реализовывать более быстрые перечисления. Этот подход достаточно часто называется структурным соответствием.

В рамках новой версии языка using также будет поддерживать структурное соответствие. На первый взгляд, это нововведение кажется лишенным смысла, так как мы вряд ли ожидаем увидеть класс для использования с using без реализации интерфейса IDisposable. Впрочем, мы упускаем такое нововведение как ref struct. Реализация интерфейса в данном случае невозможна, поэтому здесь нам на помощь приходит структурное соответствие.

Методы расширения с foreach и using

Как дополнение к предыдущему посту, теперь мы можем добавить GetEnumerator и Dispose в качестве методов расширения для работы с foreach и using соответственно. Опять же, здесь мы говорим об особенности, которая станет полезной в частном случае. К примеру, вы хотите добавить Dispose-расширение в COM-объект сторонней библиотеки (к примеру, дабы вызвать Marshal.ReleaseComObject).

Впрочем, информация об этом еще неполная и мы можем упустить некоторые случаи использования данной фичи.

Using неявной области видимости

На данный момент выражение using может быть использовано только в рамках явной области видимости (в скобках). Если данное нововведение будет принято на вооружение, теперь вы можете писать конструкции следующего вида:

Каждая из этих переменных будет автоматически очищена в конце текущей области видимости в реверсивном порядке. Функционально написанное выше эквивалентно этому, но гораздо более элегантно:

Подобное может быть полезно в тех случая, когда в одно и то же время создается множество dispose-объектов. Теперь вы можете создавать подобные объекты даже внутри выражений в полной уверенности в безопасности данного типа объявлений.

Возможный минус данного нововведения в том, что оно не совместимо с оператором goto.

Автор перевода: Евгений Лукашук

Источник

КОММЕНТАРИИ И ОБСУЖДЕНИЯ
advertisement advertisement

Покупай подпискус доступом ко всем курсам и сервисам

Библиотека современных IT знаний в удобном формате

Выбирай свой вариант подписки в зависимости от задач, стоящих перед тобой. Но если нужно пройти полное обучение с нуля до уровня специалиста, то лучше выбирать Базовый или Премиум. А для того чтобы изучить 2-3 новые технологии, или повторить знания, готовясь к собеседованию, подойдет Пакет Стартовый.

Стартовый
  • Все видеокурсы на 3 месяца
  • Тестирование по 10 курсам
  • Проверка 5 домашних заданий
  • Консультация с тренером 30 мин
59.99 $
Оформить подписку
Базовый
  • Все видеокурсы на 6 месяцев
  • Тестирование по 16 курсам
  • Проверка 10 домашних заданий
  • Консультация с тренером 60 мин
89.99 $
Оформить подписку
Премиум
  • Все видеокурсы на 1 год
  • Тестирование по 24 курсам
  • Проверка 20 домашних заданий
  • Консультация с тренером 120 мин
169.99 $
Оформить подписку
Notification success