Будущее C # раскрывается при сборке


Выступление Мэдса Торгерсена и Дастина Кэмпбелла на сборке этого года подробно рассказало о том, что ждет C # в будущем, в основном на C # 8. Подробности появятся, поскольку последняя версия Visual Studio включает начальную поддержку некоторых функций C # 7.3.

Мадс Торгерсен — программный менеджер для C #, а Дастин Кэмпбелл — программный менеджер в команде Visual Studio. В своем выступлении на Build 2018 обсуждались особенности C # 7.3, а также то, что ожидается в будущем, включая обнуляемые ссылочные типы, рекурсивные шаблоны и асинхронные потоки.

Поддержка ссылочных типов, допускающих значение NULL, предназначена для выявления проблем, связанных с NULL, на этапе разработки, даже в существующем коде. В будущем для ссылочных переменных, параметров и полей по умолчанию будет использоваться значение, не допускающее значения NULL. Если вам нужна переменная, параметр или что-то еще, чтобы разрешить нули, вы сообщите C # об этом, поставив вопросительный знак после имени типа. Пример, используемый для объяснения этого, — это имя, состоящее из имени, отчества, фамилии, где имя и фамилия не могут быть обнулены, но отчество может быть пустым.
Хотя это будет способствовать развитию кода, идея вводится осторожно. Все действия по обеспечению нулевого поведения будут осуществляться в форме предупреждений, а не ошибок, и есть переключатель компилятора для включения или выключения предупреждений. Предупреждения распознают существующие способы проверки на null и не заставят вас изменить код там, где вы уже прилежно это делаете.
Рекурсивные шаблоны — еще одно улучшение заголовка. Первое сопоставление с образцом было добавлено в C # 7, а в C # 8 оно будет расширено за счет рекурсивных шаблонов. Рекурсивный шаблон означает, что вы можете сопоставить часть данных с подшаблонами. В предложении по этой функции говорится, что она обеспечит многие преимущества алгебраических типов данных и сопоставления с образцом из функциональных языков, но таким образом, который будет плавно интегрирован с ощущением C #. Предварительный просмотр рекурсивного сопоставления с образцом доступен на GitHub.
В рекурсивном шаблоне, если ваш клиентский класс с Forename, Middlename, Surname также имеет SalesPerson как часть класса, а SalesPerson также имеет собственное Forename и т. Д., Вы можете использовать рекурсивное сопоставление с шаблоном для проверки обеих фамилий.
Диапазоны — еще одно предстоящее дополнение, которое будет включено в предварительную версию на GitHub. Добавление диапазонов означает, что выражение x..y будет генерировать значение типа System.Range.
Диапазоны обладают рядом преимуществ, в том числе упрощением извлечения данных и возможностью использования в шаблонах для выполнения простых проверок диапазона.
Асинхронные потоки были еще одним ключевым улучшением, о котором говорилось в докладе. Асинхронные потоки добавляют асинхронный эквивалент IEnumerable. C # поддерживает методы итератора и асинхронные методы, но не поддерживает метод, который одновременно является итератором и асинхронным методом. Асинхронные потоки означают, что await можно использовать в новой форме асинхронного итератора, который возвращает IAsyncEnumerable или IAsyncEnumerator , а не IEnumerable или IEnumerator , с потребляемым IAsyncEnumerable в новый foreach await. Интерфейс IAsyncDisposable также используется для включения асинхронной очистки.
Обсуждение включает детали других потенциальных улучшений, включая реализации интерфейсов по умолчанию, позволяющие абстрактным интерфейсам полностью определять методы, как абстрактные классы. Эта идея для C # 8 все еще обсуждается и вызывает много дискуссий.
Наряду с деталями того, что может или не может появиться в будущих версиях C #, Торгерсен и Кэмпбелл также обсудили, что последняя версия Visual Studio включает в себя в плане начальной поддержки некоторых функций C # 7.3, включая предоставление большего контроля над типами. вы переходите к универсальным функциям.
Теперь вы можете сказать, что типы должны быть перечисляемыми, делегируемыми или непреобразуемыми типами — другими словами, типом, который может быть отправлен без изменений через границу управляемого-неуправляемого в собственный код, поскольку он не имеет ссылок на управляемую кучу. . По сути, это означает тип, состоящий только из определенных предопределенных примитивных типов (таких как int или UIntPtr) или массивов этих типов.
Другая поддержка C # 7.3 в Visual Studio включает лучшее разрешение перегрузки, чтобы ошибки компилятора не возникали из-за ложных совпадений; выделенные стеком массивы; и сравнения кортежей.

Больше информации
Рабочий список функций C # 8
Статьи по Теме
Project Rider — кроссплатформенная среда разработки C #
C # присоединяется к составу PVS-Studio
Возможности C # 7
C # 7 — Что бы вы вставили?
Выпущена Visual Studio 2015 CTP 5
Массовый переход Microsoft на GitHub
.NET Core Подробности — достаточно ли?
Последние версии на C # 6 и VB 12
Возможности C # 6.0
В C # появился новый оператор — безопасная навигация
RyuJIT — компилятор JIT .NET нового поколения
Microsoft советует разработчикам C # изучать JavaScript !?
Команда Microsoft объясняет языковую стагнацию

Чтобы быть в курсе новых статей на I Programmer, подпишитесь на нашу еженедельную новостную рассылку, подпишитесь на RSS-канал и подпишитесь на нас в Twitter, Facebook или Linkedin.

Комментарии
Оставьте комментарий или просмотрите существующие комментарии с помощью Disqus
или отправьте свой комментарий по адресу: comments@i-programmer.info


Добавить комментарий