Язык C# и .NET: путь продолжающего в 2019 году

1
7144
Добавить в избранное

Язык C# не стоит на месте и обновляется корпорацией Microsoft. Вот интересные обновления, представленные в восьмой версии языка.

Язык C# и .NET: путь продолжающего в 2019 году

Хорошо знаете C#? Тогда смело вносите себя в список продолжающих 😉

Что сейчас происходит? В Preview 2 появились улучшения pattern matching, using-объявления, статические локальные функции и одноразовые ref структуры.

В Preview 1 были представлены фиктивные ссылочные типы, асинхронные потоки, а также индексы и диапазоны.

Как работает pattern matching в C#?

Улучшение даёт инструменты для предоставления формозависимой функциональности между похожими, но различающимися видами данных. В C# 7.0 синтаксис для шаблонов типов и констант был доступен выражением is с оператором switch. Но это только первые шаги к поддержке парадигм программирования с разделёнными функциональностью и данными.

По мере движения индустрии к микросервисам и облачным инфраструктурам возникает необходимость в других инструментах.

C# 8.0 расширяет словарь так, что можно использовать выражения шаблонов в разных местах кода. Применяйте эту фичу, когда данные и функциональность разделены. Используйте pattern matching, когда ваш алгоритм не зависит от типа среды выполнения объекта. Эти методы предоставляют другой способ выразить дизайн.

Плюс в язык C# 8.0 добавлены рекурсивные шаблоны. Результат любого выражения шаблона – выражение. Рекурсивный шаблон – это просто выражение шаблона, применённое на выходе другого выражения шаблона.

А что там со switch?

Часто выражение switch производит значение, указанное в одном из блоков case. Выражения switch позволяют использовать более краткий синтаксис. В них меньше повторяющихся case и break, и меньше фигурных скобок. Посмотрите на следующее перечисление с цветами радуги:

А теперь укажем тип RGBColor, который построен из компонентов R, G и B. С помощью следующего метода можно конвертировать значение Rainbow в значения RGB:

Здесь есть несколько улучшений синтаксиса:

  • Переменная появляется перед switch. Различный порядок помогает визуально различить выражение switch от условия.
  • Элементы case и : заменены на =>, что более кратко и интуитивно.
  • Случай default заменён на _ отказ.
  • Тела – это выражения, не условия.

Сравните с эквивалентным кодом с использованием классического условия switch:

В документации больше примеров:

using-объявления

Это способ объявления переменных с помощью ключевого слова using. Оно указывает компилятору, что метод Disposе() для объявляемой переменной будет вызван в конце области видимости. Посмотрите на пример записи файла:

В этом примере вызов происходит по достижении закрывающей скобки метода, то есть в конце области видимости, где объявлен file. А вот эквивалентен с использованием классического оператор using:

Видите? Здесь Dispose() вызывается по достижении закрывающей скобки для using. В обоих случаях компилятор вызывает Dispose().

Статические локальные функции

Теперь можно добавлять модификатор static к локальным функциям, чтобы убедиться, что они не захватывают переменные из области видимости.

Дальше локальная функция LocalFunction получает доступ к переменной y, объявленной в области видимости. Так что LocalFunction не может быть объявлена с модификатором static:

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

Ранее были анонсированы обновления в C# 8.0 Preivew 1, которые доступны в официальной документации:

Полезные инструменты

.NET Core – это модульная платформа для разработки программного обеспечения, с открытым исходным кодом. Она была официально выпущена 27 июня 2016 года. На основе .NET Core был создан ASP.NET Core – платформа разработки веб-приложений.

Обе платформы поддерживают язык C# и являются обновлениями предшествующих .NET Framework и ASP соответственно.

Разрабатываете веб-приложения? Читайте документацию APS.NET на русском.

238 samples for ASP.NET Core 2.1, 2.2

Цель этого проекта – дать возможность программистам .NET изучить новый стек ASP.NET Core с нуля с помощью кода. Репозиторий обновляется ежедневно и содержит примеры использования ASP.NET Core 3.0!

.NET Diagnostics Tools

Этот репозиторий содержит инструменты для диагностики .NET приложений. Вот некоторые:

  • dotnet-dump – кроссплатформенная утилита для сбора дампов памяти процессов .NET.
  • dotnet-collect – кроссплатформенный инструмент для сбора данных из Managed EventSources и событий .NET Runtime с помощью EventPipe.

Язык C# и .NET: свежие книги

Гораздо легче осваивать обновления любимого языка с помощью книг. Так и с C#. Книги скачать или купить можно по приведенным ниже ссылкам:

  • C# in Depth 4th Edition, 2019 – книга от Senior Software Engineer из Google. Гайд для освоения последних нововведений в язык программирования C#. В ней рассматриваются асинхронные функции, тело-выражения, интерполированные строки, кортежи и не только.
  • Программирование на C# для начинающих. Основные сведения, 2018 – это руководство посвящено начинающим разработчикам. Оно познакомит вас с синтаксисом языка, основными операторами и функциями по работе с числами, строками и массивами, а также с основами объектно-ориентированного программирования.
  • C# 7.1 and .NET Core 2.0: Modern Cross-Platform Development – в этом руководстве вы познакомитесь с основами работы C# 7.1 и платформы .NET Core 2.0.
  • C# на примерах, 2018 – освойте язык C#, рассматривая и решая примеры, сложность которых растёт от главы к главе. Сначала вы напишете простую программу по вводу и выводу данных, а потом перейдёте к ключевым возможностям C#: многопоточность, ООП, создание клиент-серверных приложений и разработка программ для мобильных устройств.

Веб-разработка с ASP.NET Core MVC

ASP.NET MVC – это многофункциональная платформа для создания веб-приложений и API-интерфейсов с помощью структуры проектирования Model-View-Controller.

Структура архитектуры MVC предполагает разделение приложения на три основные группы компонентов:

  • модели
  • представления
  • контроллеры

Как это работает? Запросы пользователей направляются в контроллер, который отвечает за работу с моделью для выполнения действий пользователей и получение результатов запросов. Контроллер выбирает представление для отображения пользователю с данными модели.

Язык C# и .NET: путь продолжающего в 2019 году

Распределение обязанностей позволяет масштабировать приложение в контексте сложности. Так проще писать код, выполнять отладку и тестирование компонента (модели, представления или контроллера) с одним заданием. Гораздо труднее обновлять, тестировать и отлаживать код, зависимости которого находятся в двух или трёх этих областях.

Например, логика пользовательского интерфейса, как правило, подвергается изменениям чаще, чем бизнес-логика. Если код представления и бизнес-логика объединены в один объект, содержащий бизнес-логику, объект необходимо изменять при каждом обновлении UI. Это часто приводит к ошибкам и тестированию бизнес-логики после каждого незначительного изменения пользовательского интерфейса.

Начните изучение MVC и ASP.NET для веб-разработки с официальной русскоязычной документации от Microsoft.

А что вы ждете от C# 8.0? Пишите в комментариях 🙂

Интересуетесь программированием на C#?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Один комментарий

  1. Salvador Limones

    Радует, что C# с каждым обновлением превращается в F#

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