Выступление Мэдса Торгерсена и Дастина Кэмпбелла на сборке этого года подробно рассказало о том, что ждет 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
Обсуждение включает детали других потенциальных улучшений, включая реализации интерфейсов по умолчанию, позволяющие абстрактным интерфейсам полностью определять методы, как абстрактные классы. Эта идея для 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