C# (произносится как «си-шарп») — это объектно-ориентированный язык программирования, разработанный корпорацией Microsoft в рамках платформы .NET. Он сочетает в себе синтаксис, похожий на C++ и Java, с глубокими интеграциями в экосистему Windows.<\/p>\n
Кратко о C#:<\/p>\n
В C# все строится вокруг классов и объектов. Код структурируется так, как устроены реальные вещи: со свойствами (характеристиками) и методами (действиями). Разберем основные составляющие языка.<\/p>\n
Например, нам нужен шаблон фильма: у него есть «название» (Title) и флаг «18+» (IsAdult).<\/p>\n
Создаем класс (шаблон, по которому создаются объекты — фильмы):<\/p>\n
class <\/span>Movie\n<\/span>{\n<\/span> <\/span>public string <\/span>Title<\/span>;\n<\/span> <\/span>public bool <\/span>IsAdult<\/span>;\n<\/span>}\n<\/span><\/code><\/pre>\nПрописываем класс User<\/code> (здесь метод CanWatch<\/code> проверяет, может ли конкретный пользователь Name<\/code> смотреть конкретный фильм Title<\/code>):<\/p>\nclass <\/span>User\n<\/span>{\n<\/span> <\/span>public string <\/span>Name<\/span>;\n<\/span> <\/span>public int <\/span>Age<\/span>;\n<\/span>\n<\/span> <\/span>public bool <\/span>CanWatch<\/span>(Movie <\/span>movie<\/span>)\n<\/span> {\n<\/span> <\/span>return <\/span>!<\/span>movie<\/span>.<\/span>IsAdult <\/span>|| <\/span>Age <\/span>>= <\/span>18<\/span>;\n<\/span> }\n<\/span>}\n<\/span><\/code><\/pre>\n\nЧитайте также:<\/strong>
\nС чего начать изучение языка программирования С<\/a>?<\/p>\n<\/blockquote>\n<\/a>Переменные и типы данных: имя данных и формат<\/h3>\nТеперь нужно объявить переменные для имени пользователя, возраста и флага активности:<\/p>\n
var <\/span>user <\/span>= new User { <\/span>Name <\/span>= \"<\/span>Артем<\/span>\", <\/span>Age <\/span>= <\/span>17 <\/span>};\n<\/span>\n<\/span>var <\/span>movies <\/span>= new List<Movie>\n<\/span>{\n<\/span> new Movie { <\/span>Title <\/span>= \"<\/span>Сказка<\/span>\", <\/span>IsAdult <\/span>= <\/span>false <\/span>},\n<\/span> new Movie { <\/span>Title <\/span>= \"<\/span>Триллер 18+<\/span>\", <\/span>IsAdult <\/span>= <\/span>true <\/span>}\n<\/span>};\n<\/span>\n<\/span>foreach <\/span>(<\/span>var <\/span>movie <\/span>in <\/span>movies<\/span>)\n<\/span>{\n<\/span> <\/span>if <\/span>(<\/span>user<\/span>.<\/span>CanWatch<\/span>(<\/span>movie<\/span>))\n<\/span> {\n<\/span> <\/span>Console<\/span>.<\/span>WriteLine<\/span>($\"{<\/span>user<\/span>.<\/span>Name<\/span>}<\/span> может смотреть: <\/span>{<\/span>movie<\/span>.<\/span>Title<\/span>}\");\n<\/span> }\n<\/span> <\/span>else\n<\/span> {\n<\/span> <\/span>Console<\/span>.<\/span>WriteLine<\/span>($\"{<\/span>user<\/span>.<\/span>Name<\/span>}<\/span> не может смотреть: <\/span>{<\/span>movie<\/span>.<\/span>Title<\/span>}\");\n<\/span> }\n<\/span>}\n<\/span><\/code><\/pre>\nДля наглядности рассмотрим на примере. Вы заходите в онлайн-кинотеатр, и перед вами карточка фильма:<\/p>\n
\n- Название: «Триллер».<\/li>\n
- Возрастной рейтинг: 18+.<\/li>\n
- Длительность: 2 часа.<\/li>\n
- Жанр: триллер.<\/li>\n<\/ul>\n
При клике на фильм программа просканирует профиль пользователя:<\/p>\n
\n- Имя: Артем.<\/li>\n
- Возраст: 17.<\/li>\n<\/ul>\n
Затем программа запустит метод: «Может ли Артем смотреть этот фильм?» Метод сделает простую проверку:<\/p>\n
\n- Если возраст больше или равен 18 — доступ открыт.<\/li>\n
- Если нет — доступ запрещен.<\/li>\n<\/ul>\n
И вернется с ответом.<\/p>\n
<\/a>Как выбрать фреймворк в C#: простая шпаргалка<\/h2>\nВ примере выше с онлайн-кинотеатром отлично подошла бы связка ASP.NET Core + Razor Pages или MVC. Такая архитектура подходит, чтобы написать полноценное веб-приложение, в котором пользователь вводил бы свой возраст, а система проверяла бы доступ и показывала только те фильмы, которые ему разрешены.<\/p>\n
Эта небольшая шпаргалка, которая поможет сориентироваться в популярных фреймворках C# и понять, какой лучше выбрать под конкретную задачу.<\/p>\n\n\n\nХочу сделать...<\/strong>\nЧто выбрать<\/strong>\nПочему<\/strong>\n\n\n\n\nВеб-сайт или веб-приложение\nASP.NET Core + Razor Pages<\/strong>\nПросто, современно, чистый C#\n\n\nСложный веб-проект с разделением логики и данных\nASP.NET Core + MVC<\/strong>\nЧеткая структура, легко масштабировать\n\n\nИнтерфейс как в обычных приложениях под Windows\nWPF или WinForms<\/strong>\nЧеткая структура, легко масштабировать\n\n\nМобильное приложение (iOS\/Android)\nMAUI или Xamarin<\/strong>\nОдин код на C# — работает везде\n\n\nОнлайн-чат\nSignalR<\/strong>\nПоддерживает живое общение без перезагрузки\n\n\nИгру или 3D-проект\nUnity<\/strong>\nСамый популярный игровой движок на C#. На нем написаны Call of Duty: Heroes, Gone Home, Fallout Shelter\n\n\nИскусственный интеллект, рекомендации\nML.NET<\/strong>\nМашинное обучение прямо в C#\n\n\nМодное веб-приложение без JavaScript\nBlazor<\/strong>\nC# в браузере, работает как SPA-приложение (которое не нужно каждый раз перезагружать, например, так работает YouTube, Gmail)\n\n\n\n\nЧитайте также:<\/strong>
\nЧто такое язык программирования C++<\/a><\/p>\n<\/blockquote>\n<\/a>Когда стоит учить C#, а когда лучше выбрать другой язык<\/h2>\n\n\n\nПодойдет, если...<\/strong>\nНе подойдет, если...<\/strong>\n\n\n\n\nСобираетесь работать с технологиями Microsoft и .NET\nХотите просто попробовать кодинг без лишних установок\n\n\nПланируете разрабатывать сложные бизнес-приложения\nНе любите строгость в синтаксисе и типах\n\n\nИнтересуетесь созданием веб-сайтов, десктопов или API\nИщете язык с минимальным порогом входа\n\n\nМечтаете делать игры на Unity\nНе хотите работать в Visual Studio или с проектной структурой\n\n\nЛюбите четкие правила и предсказуемость в коде\nХотите быстро написать скрипт и забыть\n\n\n\nЕсли вдруг вам показалось, что C# не для вас, — не спешите с выводами. Иногда просто нужно начать с другого языка.<\/p>\n
Так сделала Даша — студентка нашей школы. В институте она столкнулась с конструкциями вроде #include<\/code>, строгими правилами, странным синтаксисом… Ничего не поняла и решила, что к программированию просто не способна. Семь лет она с этим вполне спокойно жила.<\/p>\nА потом решила вернуться — только уже на своих условиях. Выбрала Python, и вдруг стало получаться. Стало интересно. Появилась цель, появились первые проекты. Теперь она пишет бэкенд и делится своей историей, чтобы поддержать других. Вот что из этого вышло<\/a>.<\/p>\n\n<\/a>Учите C# легко и бесплатно<\/h4>\nПопробуйте наш бесплатный курс C#<\/a><\/strong>!<\/p>\n<\/blockquote>\n<\/a>Что нельзя (или почти невозможно) сделать на C#<\/h2>\nНа C# пишут веб-приложения, игры, мобильные приложения, десктопные программы и многое другое. Тем не менее на нем сложно, а иногда и вовсе невозможно делать некоторые решения. Вот список того, что не очень удобно или вообще нельзя реализовать на C# напрямую — чтобы вы понимали границы языка программирования и знали, для каких задач он точно не подходит.<\/p>\n
<\/a>1. Фронтенд для браузера (HTML\/CSS\/JS)<\/h3>\nНа C# нельзя написать интерфейс для сайта, как это делают на JavaScript.<\/p>\n
Исключение: Blazor (но в основе все равно WebAssembly и JavaScript).<\/p>\n
<\/a>2. Системное\/низкоуровневое программирование<\/h3>\nНа C# нельзя писать драйверы, прошивки, работу с «железом» и ядром. Для этого есть C, C++, Rust.<\/p>\n
<\/a>3. Однострочные скрипты и быстрая автоматизация<\/h3>\nC# не подходит, если нужно переименовать 1000 файлов, спарсить сайт, обработать текст. Для этого лучше взять Python или bash — они сделают это быстрее. Потому что в C# нужно сначала сделать проект, выполнить компиляцию, сделать сборку…<\/p>\n
Пример:<\/strong> нужно быстро переименовать 200 файлов в папке или спарсить цены с сайта.<\/p>\nВ Python это одна строка:<\/p>\n
import <\/span>os<\/span>; [<\/span>os<\/span>.<\/span>rename<\/span>(<\/span>f<\/span>, <\/span>f<\/span>\"<\/span>new_{f}<\/span>\") <\/span>for f in os<\/span>.<\/span>listdir<\/span>()]\n<\/span><\/code><\/pre>\nА в C# нужно:<\/p>\n
\n- Создать проект в Visual Studio или через CLI.<\/li>\n
- Подключить
System.IO<\/code>.<\/li>\n- Написать
Main()<\/code>.<\/li>\n- Собрать проект.<\/li>\n
- Запустить его.<\/li>\n<\/ul>\n
<\/a>4. Приложения под старые или нестандартные платформы<\/h3>\nC# не предназначен для прошивки микроконтроллеров, Arduino, STM32 и подобных устройств. Там помогут C\/C++ или специализированные языки, например Verilog \/ VHDL или Matlab.<\/p>\n
<\/a>5. Сверхлегкие проекты без зависимостей<\/h3>\nC# не лучший выбор, если нужно просто написать скрипт в один файл без сборки. Язык заточен под архитектуру, классы, строгость.<\/p>\n
<\/a>6. Тонкое управление памятью<\/h3>\nВ C# есть сборщик мусора (встроенный механизм, который автоматически удаляет из памяти все, что больше не используется). Но вы не управляете этим процессом напрямую. Сборка мусора может включиться в неподходящий момент (например, когда все фризит). Поэтому если нужно управлять памятью вручную, то C++ для этого подходит больше.<\/p>\n
\nТакже интересно:<\/strong>
\nКак выучить PHP<\/a>: руководство для начинающих<\/p>\n<\/blockquote>\n<\/a>Чек-лист: с чего начать учить C#<\/h2>\nНиже — простой чек-лист, с чего начать обучение C# и как выстраивать процесс, если вы новичок.<\/p>\n
\n- Установите рабочую среду:<\/strong><\/li>\n<\/ol>\n