5.05. C#
Основы C#
Возможности C#
Какие возможности предоставляет C#?
- писать код один раз и запускать его на разных платформах: Windows, Linux, macOS, iOS, Android;
- разработка desktop-приложений (WinForms, WPF), мобильных (Xamarin), веб-приложений (ASP.NET), микросервисов;
- совместимость с обширной библиотекой классов .NET, что даёт доступ к готовым решениям для работы с файлами, сетью, базами данных, графикой и многим другим;
- строгая система типов снижает риск ошибок времени выполнения;
- автоматическое управление памятью (Garbage Collection);
- работать с лямбдами, неизменяемыми коллекциями, функциями высшего порядка;
- ключевые слова async/await, которые упрощают написание асинхронного кода без потерь в производительности;
- может компилироваться в нативный код через AOT (.NET Native), выполняться в виртуальной машине (.NET Runtime), работать в контейнерах и облаке;
- интеграция с одной из самых мощных экосистем, включающей ASP.NET, Entity Framework, WPF, WinForms, MAUI и другие технологии;
- работа с SQL через ADO.NET, Entity Framework, LINQ to SQL;
- разработка корпоративных систем - ERP, CRM, HRM, банковские системы, где важна надёжность и долгосрочная поддержка;
- создание 2D и 3D игр с использованием Unity, Godot и других движков.
Как работать с C#?
С чего начать?
Ну, во-первых, сначала отметим, что документация у C# широкая и доступна на сайте Microsoft - https://learn.microsoft.com/ru-ru/dotnet/csharp/
Чит-лист - https://cheatsheets.zip/cs
Во-вторых, представим, что вы уже понимаете, какую программу хотите написать. Тогда ваши шаги будут следующими:
- Установить .NET.
- Установить Visual Studio или другую IDE.
- Определить технологию:
- общий тип – консоль или пользовательский интерфейс;
- работа приложений – WinForms/WPF/ASP.NET Core;
- работа с данными – EF Core или ADO.NET.
- Установить необходимые библиотеки через NuGet.
- Приступить к написанию кода.
Поговорим о библиотеках.
Код компилируется в два основных формата – DLL и EXE.
- EXE – исполняемый файл, который и запускает программу.
- DLL – библиотека, не исполняемый файл, который содержит уже «упакованный» набор классов и методов.
Эти файлы содержат в себе:
- скомпилированный код;
- метаданные (информация о типах, методах, свойствах);
- манифест (список зависимостей, версии, автор и т.д.).
Эти файлы образуют собой сборку – готовое приложение.
Итоговая сборка может быть Debug и Release (отладочное и финальное). Сборки пакуются в каталог bin/ в решении. Пример:
C:/MyApp/bin/Debug/MyApp.exe
DLL-файл предоставляет методы, которые можно вызывать из других программ. К примеру, если вам нужно осуществить математическую операцию, вы добавляете библиотеку к своему коду, используя ключевое слово using. Это всё равно, что сказать: «Здравствуй. Сейчас мы будем с тобой работать. Нам понадобится учебник №1 и учебник №2». Это и будет некая установка для программы, что мы будем ссылаться на эти «учебники». И если сразу не договориться с программой, то это будет равнозначно тому, что ученик придёт на урок, забыв учебники дома, и не сможет учиться – он не поймёт, о чем будет идти речь. И тогда Visual Studio намекнёт – «братишка, я не понимаю о чём ты – я не знаю никакого ITelegramBotClient»:

Но стоит установить из NuGet библиотеку Telegram.Bot, и добавить в код:
using Telegram.Bot;
И вуаля – ошибок нет

Отсюда ключевая фишка – API в .NET позволяет ссылаться на сборки через using на пространства имён – namespace.
Пространства имен
Исходный код хранится в файлах .cs для C#. Там пишется логика приложения. В проекте можно создавать новые файлы, и через внутреннее API платформы будет взаимодействие между ними. Допустим, можно сделать, что логика для работы с базой данных будет в одном файле, а логика для вывода данных на интерфейс – в другом.
Файлы проекта – это не .cs.
Проект – это набор файлов, который при сборке превращается в .dll или .exe. Сведения о структуре проекта хранятся в файле .csproj – это XML-файл, описывающий структуру проекта.
Там указывается:
- какие .cs файлы входят в проект;
- какие NuGet-пакеты подключены (зависимости);
- какая версия .NET используется (допустим, 8.0);
- настройки компиляции (Debug/Release).
Файлы решения - .sln (solution file). Он объединяет несколько .csproj в один проект.
Приложение – это готовое решение. Можно собирать всё решение целиком.
Структура решения может быть такой:
Решение/Проект/Каталог/Код
Конфигурация хранится в файле appsettings.json (допустим, строки подключения, содержащие путь к базе данных).
Main метод, точка входа
Структура простого консольного приложения
Console.WriteLine, ReadLine
Взаимодействие программы с пользователем – одна из основных задач любого приложения. В C# стандартный ввод и вывод осуществляются через класс Console.
- Вывод данных: Console.WriteLine(), Console.Write();
- Ввод данных: Console.ReadLine().
- Чтение одного символа: Console.ReadKey().
Пример:
string name = Console.ReadLine();
Console.WriteLine($"Здравствуйте, {name}!");