язык си шарп для чего нужен

Для чего нужен язык C#

Как в Микрософте сделали свой язык программирования. И зачем.

Вы наверняка слышали о языках программирования, которые начинаются на «Си»: просто «Си», «Си плюс плюс» и «Си шарп». Сейчас хорошее время, чтобы разобраться, что к чему.

Главное

Игры на DirectX

DirectX — набор компонентов, которые используются для программирования трёхмерной графики и работы со звуком и видео. С помощью C# можно легко подключиться к DirectX и написать свой трёхмерный шутер или любую другую игру. Технически это выглядит так: C# отвечает за логику и поведение игры, а DirectX — за графику и звуковое сопровождение.

При правильном подходе графика DirectX выдаёт довольно реалистичную картинку.

Игры на Unity

Unity — это движок для создания двумерных и трёхмерных игр. Он берёт на себя физику, графику и многие служебные штуки, чтобы вы могли сосредоточиться на контенте и сценарии игры. Всё бы хорошо, но без программирования в Unity всё равно не получится, и бывалые разработчики рекомендуют для Unity выбирать именно C#. Есть и другие варианты, например, собственный язык UnityScript или JavaScript.

Rust — игра, написанная на C# и Unity.

Машинное обучение

Так как C# — это проект Микрософта, то у него всё в порядке с поддержкой и с библиотеками. В мире C# библиотеки есть практически для всего, в том числе и для работы с нейросетями и машинным обучением — ML.NET.

Это значит, что вы можете использовать все возможности нейронок в приложениях и объединять их с помощью одного и того же языка программирования. А так как C# — мультиплатформенный язык, то машинное обучение можно встроить практически во что угодно, от мобильных приложений до носимой электроники.

Распознавание образов можно встраивать в любую электронику, если вы пишете на C#.

Игры и программы для разных мобильных платформ

Чтобы один и тот же C#-код работал на разных платформах, используют Mono и Xamarin — продукты для кросс-платформенной разработки под разные операционные платформы.

Программы и сервисы для веба

C# можно использовать для создания веб-приложений. Работает так:

Теоретически вы можете написать приложение для п. 2 на любом языке, который поддерживает серверные решения Microsoft, в некоторых случаях это может быть и PHP. Но эксперты говорят, что для софта Microsoft есть смысл писать на их языке C#.

Сразу скажем: в большинстве бытовых и любительских проектов вам будет достаточно даже не приложения на C# (или Python, Ruby или PHP), а уже готового решения. Например, если нужен блог, лучше запустить его на хостинге WordPress и просто начать им пользоваться. Это не самый быстрый софт и не самый гибкий, но его запуск займёт у вас 15 минут, а не 15 недель.

А вот на сложных высоконагруженных сайтах WordPress уже не потянет — нужны другие технологии. И тут уже требуются глубокие знания: на одном железе и с одним стеком технологий лучше всего будет работать C#, на другом — PHP, на третьем — Ruby и т. д.

Источник

Краткий обзор языка C#

C# — это объектно- и компонентно-ориентированный _ язык программирования. C# предоставляет языковые конструкции для непосредственной поддержки такой концепции работы. Благодаря этому C# подходит для создания и применения программных компонентов. С момента создания язык C# обогатился функциями для поддержки новых рабочих нагрузок и современными рекомендациями по разработке ПО. C# — это _ объектно-ориентированный язык. Вы определяете типы и их поведение.

Исходный код, написанный на языке C# компилируется в промежуточный язык (IL), который соответствует спецификациям CLI. Код на языке IL и ресурсы, в том числе растровые изображения и строки, сохраняются в сборке, обычно с расширением .dll. Сборка содержит манифест с информацией о типах, версии, языке и региональных параметрах для этой сборки.

При выполнении программы C# сборка загружается в среду CLR. Среда CLR выполняет JIT-компиляцию из кода на языке IL в инструкции машинного языка. Среда CLR также выполняет другие операции, например, автоматическую сборку мусора, обработку исключений и управление ресурсами. Код, выполняемый в среде CLR, иногда называется управляемым кодом. «Неуправляемый код» преобразуется в машинный язык, предназначенный для конкретной платформы.

Здравствуй, мир

Для первого знакомства с языком программирования традиционно используется программа «Hello, World». Вот ее пример на C#:

Типы и переменные

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

В C# существуют две разновидности типов: ссылочные типы и типы значений. Переменные типа значений содержат непосредственно данные, а в переменных ссылочных типов хранятся ссылки на нужные данные, которые именуются объектами. Две переменные ссылочного типа могут ссылаться на один и тот же объект, поэтому может случиться так, что операции над одной переменной затронут объект, на который ссылается другая переменная. Каждая переменная типа значения имеет собственную копию данных, и операции над одной переменной не могут затрагивать другую (за исключением переменных параметров ref и out ).

Типы значений в C# делятся на простые типы, типы перечислений, типы структур, типы, допускающие значение NULL, и типы значений кортежей. Ссылочные типы в C# подразделяются на типы классов, типы интерфейсов, типы массивов и типы делегатов.

Далее представлены общие сведения о системе типов в C#.

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

Структура программы

В качестве небольшого примера рассмотрим сборку, содержащую следующий код:

Сборка полностью описывает сама себя и содержит весь код и метаданные, поэтому в C# не используются директивы #include и файлы заголовков. Чтобы использовать в программе C# открытые типы и члены, содержащиеся в определенной сборке, вам достаточно указать ссылку на эту сборку при компиляции программы. Например, эта программа использует класс Acme.Collections.Stack из сборки acme.dll :

Для компиляции программы вам потребуется создать ссылку на сборку, содержащую класс стека, определенный в примере выше.

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

Такие организационные блоки описываются в других статьях этого обзора.

Источник

Язык программирования C#: краткий обзор

Итак, разработка языка началась в 1998 году, а первая версия увидела свет в 2001. Группой разработчиков руководил известный в профессиональных кругах специалист Андерс Хейлсберг. Новые версии C# выходят сравнительно часто, а текущие доработки, исправление багов и расширение библиотек ведется практически на постоянной основе.

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

Чем интересен C#

Си шарп – действительно интересный инструмент, достойный внимания. Он уверенно занимает высокие позиции в рейтингах востребованных ЯП на рынке труда. Потому имеет смысл изучить его возможности подробнее и понять, для чего и где стоит применять C#.

Поддержка

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

Документация и доступность

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

Гибкость

Инструментарий C# позволяет решать широкий круг задач, язык действительно очень мощный и универсальный. На нем разрабатывают:

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

Сборка мусора

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

Обработка исключений

С помощью этого инструмента можно легко выявлять и обрабатывать ошибки в коде. Способ является структурированным с широким набором функций. При этом важно не злоупотреблять возможностями работы с исключениями, так как при неправильном использовании появляется риск появления «багов».

Единая система типов

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

Язык программирования запрещает обращение к переменным, которые не были инициализированы, что исключает возможность выполнения бесконтрольного приведения типов или выхода за пределы определенного массива данных.

Управление версиями

Очень интересная особенность ЯП. Суть в том, что многие языки не уделяют должного внимания этому вопросу, и программы нередко перестают корректно работать при переходе на новую версию продукта. В C# это было исправлено.

Архитектура платформы (как все это работает)

Для работы приложений на C# необходимо установить и настроить платформу NET Framework. Она поставляется полностью бесплатно, применяется крайне широко, а потому проблем с пользовательскими устройствами обычно не возникает. Платформа встроена в установочный пакет Windows, при необходимости ее также можно скачать и «поставить» отдельно. Существуют версии для Линукс и MAC.

В рамках платформы к обработке исполняемого кода подключается среда CLR – единый объединенный набор библиотек и классов, который был разработан Майкрософт и является реализацией мирового стандарта Common Language Infrastructure (CLI).

После работы компилятора текст программы переводится в промежуточный язык IL, который «понимает» CLI. Работает это так. IL и все необходимые ресурсы, включая строки и рисунки формата BMP, сохраняются на жесткий диск в виде исполняемого файла dll или exe. Из таких файлов с промежуточным кодом формируется сборка приложения, которая включает в себя описание с полной информацией обо всех важных параметрах работы.

Непосредственно при выполнении программы CLR обращается к сборке и производит действия в зависимости от полученных сведений. Если код написан правильно и проходит проверку безопасности системы, производится компиляция из IL в инструкции в машинные команды. Среда CLR попутно выполняет еще много побочных функций:

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

Элементы синтаксиса

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

Заключение

C# на протяжении долгого времени уверенно лидирует в рейтинге лучших и наиболее востребованных на рынке разработки языков. Сначала им заинтересовались только разработчики, которые пишут приложения под Windows. Но в процессе развития C# «научился» работать на Mac, Linux, IoS и Android. А после того, как код платформы открыли для всех желающих, были сняты практически все возможные ограничения в применении C#. В результате язык активно развивается, применяется все шире. Рекомендован к изучению в качестве одного из базовых для разработчиков любого профиля.

Источник

Язык программирования С#: история, специфика, место на рынке

Что значит С#?

В названии «Си шарп» (англ. sharp — диез) имеет свой «сакральный» смысл. Знак «#» (в музыкальной нотации читается как «диез») означает повышение высоты звука на полтона. С другой стороны, название «C#» получается путём следующей «эволюционной цепочки»: C → C++ → C++++(C#), так как символ «#» можно составить из 4-х знаков «+».

История развития языка

Язык программирования С# был разработан в 1993—2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота как язык разработки приложений для платформы Microsoft.

Сравнение с другими языками

C# — это язык с C-подобным синтаксисом. Здесь он близок в этом отношении к C++ и Java.

Будучи объектно-ориентированным языком, он много перенял у Java и С++. Как и Java, C# изначально предназначался для веб-разработки, и примерно 75% его синтаксических возможностей такие же, как у Java. C# также называют «очищенной версией Java». Ещё 10% наш герой позаимствовал из C++ и 5% – из Visual Basic. Оставшиеся 10% C# — это реализация собственных идей разработчиков. Объектно-ориентированный подход позволяет строить с помощью C# крупные, но в то же время гибкие, масштабируемые и расширяемые приложения.

C# уже давно поддерживает много полезных функций:

При этом он всё ещё активно развивается, и с каждой новой версией появляется всё больше интересного — например лямбды, динамическое связывание, асинхронные методы и т.д.

Преимущества и недостатки языка C#

У «шарпа» выделяют много преимуществ:

Но есть у C# и некоторые недостатки:

Сколько времени требуется на обучение C#

C# не представляет сложности для новичков, так как его сравнительно легко изучить и понять. На просторах интернета можно найти множество курсов и онлайн-школ по обучению С#, предлагающих обучение продолжительностью от 1 до 6 месяцев. Также существуют экспресс-курсы для «чайников», где новичков обучают основам за пару дней. Вообще, C# намного проще будет освоить, если вы уже знаете C, C++ или Java.

Востребованность на рынке

C# на протяжении долгого времени уверенно держит позиции в рейтинге наиболее востребованных на рынке разработки языков. Сначала им интересовались только разработчики под Windows, но затем C# научился работать на Mac OS, Linux, iOS и Android. А после того как код платформы открыли для всех желающих, были сняты практически все возможные ограничения в применении C#. В результате язык активно развивается и применяется всё шире. Его часто рекомендуют к изучению в качестве одного из базовых для разработчиков любого профиля.

Инструментарий C# позволяет решать широкий круг задач, язык действительно очень мощный и универсальный. На нём часто разрабатывают:

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

Что дальше?

Любой программист, конечно, найдёт что-то интересное для себя в языке C#. И он не стоит на месте, список приятных особенностей C# постоянно растёт, с каждой новой версией язык становится только лучше. Если вас заинтересовал C#, его можно основательно изучить на факультете разработки игр Geek University, вместе со множеством других интересных дисциплин. Кроме того, языку C# у нас посвящена отдельная профессия «Разработчик C#», где можно сосредоточиться только на этом языке и в дальнейшем уже выбирать интересующую сферу.

Вы ещё только новичок в программировании и не определились с первым языком? Или уже кое-чем овладели и решаете, как развиваться дальше? Тогда вы наверняка уже что-то слышали об этом языке со странной решёткой — C#. В этой статье мы постараемся дать всю необходимую информацию для того, чтобы вы могли оценить, насколько «си-шарп» вам подойдёт.

Что значит С#?

В названии «Си шарп» (англ. sharp — диез) имеет свой «сакральный» смысл. Знак «#» (в музыкальной нотации читается как «диез») означает повышение высоты звука на полтона. С другой стороны, название «C#» получается путём следующей «эволюционной цепочки»: C → C++ → C++++(C#), так как символ «#» можно составить из 4-х знаков «+».

История развития языка

Язык программирования С# был разработан в 1993—2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота как язык разработки приложений для платформы Microsoft.

Сравнение с другими языками

C# — это язык с C-подобным синтаксисом. Здесь он близок в этом отношении к C++ и Java.

Будучи объектно-ориентированным языком, он много перенял у Java и С++. Как и Java, C# изначально предназначался для веб-разработки, и примерно 75% его синтаксических возможностей такие же, как у Java. C# также называют «очищенной версией Java». Ещё 10% наш герой позаимствовал из C++ и 5% – из Visual Basic. Оставшиеся 10% C# — это реализация собственных идей разработчиков. Объектно-ориентированный подход позволяет строить с помощью C# крупные, но в то же время гибкие, масштабируемые и расширяемые приложения.

C# уже давно поддерживает много полезных функций:

При этом он всё ещё активно развивается, и с каждой новой версией появляется всё больше интересного — например лямбды, динамическое связывание, асинхронные методы и т.д.

Преимущества и недостатки языка C#

У «шарпа» выделяют много преимуществ:

Но есть у C# и некоторые недостатки:

Сколько времени требуется на обучение C#

C# не представляет сложности для новичков, так как его сравнительно легко изучить и понять. На просторах интернета можно найти множество курсов и онлайн-школ по обучению С#, предлагающих обучение продолжительностью от 1 до 6 месяцев. Также существуют экспресс-курсы для «чайников», где новичков обучают основам за пару дней. Вообще, C# намного проще будет освоить, если вы уже знаете C, C++ или Java.

Востребованность на рынке

C# на протяжении долгого времени уверенно держит позиции в рейтинге наиболее востребованных на рынке разработки языков. Сначала им интересовались только разработчики под Windows, но затем C# научился работать на Mac OS, Linux, iOS и Android. А после того как код платформы открыли для всех желающих, были сняты практически все возможные ограничения в применении C#. В результате язык активно развивается и применяется всё шире. Его часто рекомендуют к изучению в качестве одного из базовых для разработчиков любого профиля.

Инструментарий C# позволяет решать широкий круг задач, язык действительно очень мощный и универсальный. На нём часто разрабатывают:

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

Что дальше?

Любой программист, конечно, найдёт что-то интересное для себя в языке C#. И он не стоит на месте, список приятных особенностей C# постоянно растёт, с каждой новой версией язык становится только лучше. Если вас заинтересовал C#, его можно основательно изучить на факультете разработки игр Geek University, вместе со множеством других интересных дисциплин. Кроме того, языку C# у нас посвящена отдельная профессия «Разработчик C#», где можно сосредоточиться только на этом языке и в дальнейшем уже выбирать интересующую сферу.

Источник

С# для новичков: развеиваем мифы и пишем простого чат-бота

Рассказываем о С#, даём полезные советы и делаем первые шаги в программировании.

Что такое С#

С# (произносится «си шарп») — это современный язык программирования, созданный компанией Microsoft. На нём можно писать программы любой сложности для любых платформ и операционных систем.

C# устроен так, чтобы программист мог писать меньше кода. Для этого в языке много «магических конструкций» и «синтаксического сахара» — способов выразить идею лаконично.

Это кроссплатформенный язык, то есть ваша программа будет работать не только в той операционной системе, в которой она написана, но и в других.

В бэкграунде — программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.

Мифы о работе в С#

C# может казаться страшным и сложным, но на самом деле его совсем не стоит бояться. Давайте посмотрим на главные мифы о нём.

Стартовая позиция в программировании. Специалист, который имеет небольшой опыт работы с каким-то языком и выполняет простую работу с перспективой роста.

Почему же стоит учить C#

Что разрабатывают на С#

Этот язык создавался специально для разработки под Windows, так что с программами под эту операционную систему у вас не будет проблем. Это касается и Windows Phone, для которого C# — основной язык разработки. Но это не значит, что вы можете писать только для Windows, — C# замечательно работает и с другими операционными системами.

Как эффективнее работать с C#

Для эффективной работы полезно знать о дополнительных инструментах. Вот некоторые из них:

Писать код в среде разработки удобно. У неё много плюсов, например:

Пишем чат-бота

Теперь пора перейти к практике. Сегодня мы будем работать в онлайн-среде ideone. Серьезные программы в онлайн-средах не пишутся, но для обучения и практики это самое то!

Итак, откроем сайт ideone. Слева будет окошко для кода. Возможно, что по умолчанию там будет выбран другой язык — тогда просто нажмите на его название и выберите C#.

Самые первые слова любого программиста — «Привет, мир!» (Hello, World!), поэтому и мы начнём с них. Хотя не совсем: мы позволили себе заменить «мир» на «Скиллбокс» 😉 Чтобы отобразить наше сообщение, используем команду Console.WriteLine (). Свой текст напишем в скобках и не забудем поставить кавычки. Вот так:

Чтобы запустить свой код и протестировать, работает ли он, нажмём зелёную кнопку RUN в углу.

Чтобы общаться с нашим будущим чат-ботом, нам надо научить его читать — то есть сделать так, чтобы мы могли задавать информацию, с которой он будет работать. Для этого мы используем команду Console.ReadLine (). Она прочитает текст, который написал пользователь.

Давайте уже напишем начало: пусть чат-бот здоровается, а потом читает наше сообщение:

Прочитать-то он прочитает, но память у бота короткая — надо, чтобы он это сообщение запомнил. Для этого сохраним его в переменную — назовём её, например, text. Вместо Console.ReadLine () напишем вот так:

Пусть бот уточняет, что именно мы ему сказали, — вдруг мы забудем. Сделаем мы это той же командой Console.WriteLine (), только в этот раз мы не знаем заранее, что надо будет написать, поэтому используем переменную. Чтобы вставить переменную в текст, обозначим её фигурными скобками, а перед кавычками напишем знак доллара, вот так:

Важно!
Не забывайте ставить точку с запятой в конце каждой строчки!

Чтобы задать свой input, запустите программу, а потом нажмите кнопку edit слева вверху над кодом.

Снизу откроется окошко с надписью input над ним. То, что вы там напишете, программа использует при следующем запуске.

Сейчас наш чат-бот умеет здороваться и может повторить, что мы ему написали. Давайте научим его реагировать на то, что мы пишем. Для этого нам понадобится конструкция if — она проверяет, соблюдено ли условие, и решает, что делать дальше. На новой строке напишем if и в круглых скобках напишем условие. Пусть в ответ на «Привет» бот отвечает «Здарова!». Мы можем написать вот так:

У нашего решения есть несколько проблем. Первая: если мы напишем весь свой текст маленькими или большими буквами, программа его не опознает. Что с этим делать? Добавим команду ToLower (), которая заменит все буквы на маленькие, и текст, с которым мы сравниваем сообщение пользователя, тоже перепишем маленькими буквами, вот так:

А что, если мы напишем «Привет, как дела?»? Наш бот никак не отреагирует. Чтобы это исправить, используем функцию Contains (), которая проверит, есть ли нужная строка в нашем вводе.

Можем разнообразить словарный запас нашего бота, добавив ещё условий:

Теперь, если мы напишем «Привет! Как тебя зовут? Как дела?», наш бот напишет ответ на все фразы по очереди.

Важно!
Если бы вы писали более сложного «настоящего» бота или другую программу, вы бы не копировали один и тот же код много раз, а использовали файл, базу данных или что-то другое. Когда одна и та же часть повторяется много раз, код неудобно читать и тяжело исправлять.

А что, если мы хотим получать не только такие ответы, но и меняющуюся информацию? Например, нам интересно, какой сегодня день. Если бы мы написали сегодняшнюю дату в такую же конструкцию, как выше, то или нам пришлось бы переписывать код каждый день, или наша программа сразу бы устарела. Нам поможет функция DateTime. Спросим у неё, какая сейчас (Now) дата, переведём это в строку нужного формата (ToString («dd.MM.yyyy»)) и всё это сохраним в переменную date. Вот так это выглядит:

И напоследок ещё одна важная тема.

Конструкция if часто идет в паре с else. Else описывает, что сделать в том случае, если условие из if не выполнится.

Используется else после if — но мы уже не пишем условие, а только действие в фигурных скобках. Вот пример этой конструкции:

Теперь, если мы напишем сообщение боту без слова «привет», он обидится и будет ругаться.

Для первого раза всё! Это были основы основ C#. Вы уже знаете, как отобразить текст (и не только), работать с информацией от пользователя, искать в тексте фразы, и попробовали работать с конструкцией if-else, которая очень важна. Из этих «кирпичиков» можно смело начинать строить!

Если же вас интересует более глубокое погружение в C# и вы хотите научиться работать с этим языком уверенно и профессионально, можно записаться на наш курс «Профессия C#-разработчик».

Источник