C# (произносится «си шарп») — объектно-ориентированный язык программирования от Microsoft для платформы .NET. Первые уроки C# — это несколько маленьких программ, на которых новичок проходит весь путь от установки инструментов до запуска кода: вывод текста в консоль, переменные и подстановка их значений в строку.
Содержание
Ниже — что установить, полная первая программа Hello world с разбором, две формы записи (современная и классическая), уроки по переменным и интерполяции строк, а также типичная ошибка новичка с фактическим выводом и исправлением. Инструменты и версии проверены на 16.09.2026.
С чего начать: что установить
Для программ на C# нужен пакет .NET SDK — он содержит компилятор и утилиту dotnet, через которую проект создают, собирают и запускают. SDK бесплатный, ставится на Windows, Linux и macOS с сайта Microsoft.
Актуальная версия на 16.09.2026 — .NET 10, это выпуск с длительной поддержкой (LTS, вышел в ноябре 2025). Вместе с ним поставляется C# 14. Для первых уроков подойдет любая версия .NET 8 и новее — синтаксис примеров в них одинаковый.
Код удобно набирать в редакторе с подсветкой: бесплатные Visual Studio Community и VS Code, а также Rider. Специальная среда не обязательна — код можно писать и в простом текстовом редакторе, а собирать командой dotnet.
Проект-заготовку создают одной командой в пустой папке:
dotnet new console -o hello
cd hello
dotnet run
Первая команда создает консольный проект в папке hello, dotnet run собирает и запускает его. Сразу после создания проект уже печатает строку Hello, World! — весь код лежит в файле Program.cs, его и будем менять.
Первая программа: Hello, world
Откройте Program.cs и замените его содержимое на одну строку:
Console.WriteLine("Привет, Otus!");
Запустите dotnet run — в консоли появится ровно одна строка:
Привет, Otus!
Здесь Console — это тип, представляющий окно консоли, а WriteLine — его метод, который выводит переданный текст и переводит строку. Текст для вывода пишут в двойных кавычках.
Почему программа работает без единой служебной строки вокруг? В современных шаблонах C# включены две удобные для новичка вещи: операторы верхнего уровня (top-level statements), когда код пишут прямо в файле без обертки, и неявные подключения (implicit usings), благодаря которым стандартные пространства имен уже доступны. Обе появились в C# 9 и .NET 6 и с тех пор стоят в шаблоне по умолчанию.
Классическая форма: класс и метод Main
Во многих учебниках и в старом коде та же программа выглядит длиннее — с явным классом и методом Main. Полезно узнать эту форму, потому что операторы верхнего уровня компилятор все равно разворачивает в нее же.
using System;
class OtusClass
{
static void Main()
{
Console.WriteLine("Привет, Otus!");
}
}
Разберем по частям:
using System;— подключает пространство имен, в котором лежитConsole. В современном шаблоне эта строка не нужна из-за implicit usings, но в старом коде и в чужих примерах вы ее увидите.class OtusClass— класс, контейнер для кода. Имя можно поменять на любое.static void Main()— метод, с которого начинается выполнение программы (точка входа). Именно его ищет и запускает среда.Console.WriteLine(...)— тот же вывод строки, что и в короткой версии.
Обе формы дают одинаковый результат. Для первых уроков короткая запись проще, а классическую держите в уме как то, что происходит «под капотом».
Урок с переменными
Одной строкой вывода программа не ограничивается. Чтобы работать с данными, их сохраняют в переменные — именованные ячейки, значение которых можно задавать и менять. У каждой переменной есть тип: например, string для текста и int для целых чисел.
string school = "Otus";
int year = 2026;
Console.WriteLine(school);
Console.WriteLine(year);
Вывод:
Otus
2026
Сначала мы объявили переменную school типа string и присвоили ей значение "Otus", затем year типа int со значением 2026. Две команды WriteLine вывели их по очереди — каждая на своей строке.
Тип можно не писать вручную, а поручить компилятору вывести его из значения — для этого есть слово var:
var school = "Otus"; // компилятор определит тип string
var year = 2026; // определит тип int
var не делает переменную «без типа» — тип по-прежнему фиксирован, просто выведен автоматически. Работает только когда значение задано сразу: по нему компилятор и понимает тип.
Урок с интерполяцией строк
Часто нужно вставить значение переменной прямо внутрь текста. Для этого перед открывающей кавычкой ставят символ $, а переменную внутри строки заключают в фигурные скобки { }. Это называется интерполяция строк.
string school = "Otus";
Console.WriteLine($"Привет, {school}!");
Вывод:
Привет, Otus!
Компилятор подставил значение school на место {school}. Так собирать сообщения удобнее, чем склеивать текст и переменные оператором +, хотя и сложение тоже работает: "Привет, " + school + "!" даст ту же строку.
Интерполяция появилась в C# 6, поэтому в очень старых примерах вместо нее встречается либо сложение через +, либо метод string.Format.
Типичная ошибка новичка: забытый символ $
Самая частая ошибка на этом уроке — написать фигурные скобки, но забыть $ перед кавычкой. Код при этом компилируется без ошибок, но результат другой.
Неверно:
string school = "Otus";
Console.WriteLine("Привет, {school}!");
Фактический вывод:
Привет, {school}!
Без символа $ строка считается обычным текстом, и фигурные скобки печатаются буквально, вместе с именем переменной. Ошибки компиляции нет — программа просто выводит не то, что ожидалось.
Исправление — добавить $ перед кавычкой:
string school = "Otus";
Console.WriteLine($"Привет, {school}!");
Теперь вывод правильный: Привет, Otus!. Правило простое: как только внутри строки есть {переменная}, строка должна начинаться с $.
Как получить ввод от пользователя
Чтобы программа не хранила данные в коде, а спрашивала их, значение читают из консоли методом Console.ReadLine:
Console.Write("Как вас зовут? ");
string? name = Console.ReadLine();
Console.WriteLine($"Привет, {name}!");
Метод ReadLine возвращает введенную строку. Тип пишут string? — с вопросительным знаком, потому что при отсутствии ввода метод может вернуть null. Важная деталь: ReadLine всегда дает текст. Чтобы получить число, введенную строку нужно преобразовать, например int age = int.Parse(Console.ReadLine());.
Если не получилось
Первые запуски часто спотыкаются на мелочах. Ниже — типовые симптомы и что делать.
dotnet: command not found(Linux/macOS) илиdotnet не является внутренней командой(Windows) — .NET SDK не установлен или не добавлен в PATH. Вернитесь к разделу «С чего начать» и поставьте SDK, затем перезапустите терминал.error CS0103: The name 'Console' does not exist in the current context— в классической форме пропущенusing System;или в имени опечатка (consoleсо строчной буквы не подойдет, регистр важен).error CS1002: ; expected— в конце команды забыт символ;. В C# каждая инструкция завершается точкой с запятой.- Вместо русских букв в консоли Windows кракозябры — это вопрос кодировки консоли, а не ошибки в коде. Поведение зависит от версии Windows и терминала; иногда помогает команда
chcp 65001перед запуском. Для первых программ проще выводить текст латиницей.
Выводы
- Первые уроки C# — это цикл «написать код в
Program.cs— запуститьdotnet run— увидеть результат»; на выводе строки удобно проверить, что все установлено. - Минимальная программа — одна строка
Console.WriteLine(...); та же логика в классической форме оборачивается в класс и методMain. - Данные хранят в переменных с типом (
string,int); тип можно задать явно или вывести автоматически словомvar. - Подставить значение в текст помогает интерполяция:
$"...{переменная}..."; забытый$— типичная ошибка, скобки тогда печатаются буквально. - Ввод от пользователя читают через
Console.ReadLine(результат — всегда текст; число получают преобразованиемint.Parse).
Где применять на практике
C# — основной язык платформы .NET: на нем пишут веб-сервисы на ASP.NET, десктопные и мобильные приложения, игры на движке Unity и серверную логику. Первые уроки по выводу и переменным — фундамент, дальше идут условия, циклы, методы, классы и работа с коллекциями.
Освойте тему на практике
Пройти этот путь системно, с проверкой кода практикующими разработчиками, помогает курс по C# для начинающих — он ведет от базового синтаксиса к самостоятельным проектам.
Освойте тему на практике
Посмотреть, как разбирают такие темы вживую, и задать вопросы преподавателям можно на открытых вебинарах Otus — они бесплатные и проходят регулярно.
Смежные темы: Класс: что это и как использовать, Компиляторы: назначение и виды, Где писать программный код: список приложений.
FAQ
Нужно ли платить за среду разработки для C#? Нет. Сам .NET SDK, Visual Studio Community и VS Code бесплатны. Для первых уроков достаточно бесплатного SDK и любого редактора с подсветкой кода.
C# работает только под Windows? Нет. Начиная с .NET Core платформа кросс-платформенная: один и тот же код на C# собирается и запускается на Windows, Linux и macOS. Отдельные технологии, привязанные к Windows (например, WinForms), — исключение.
Чем C# отличается от языков C и C++? Несмотря на похожий синтаксис, это разные языки. C и C++ компилируются в машинный код и оставляют управление памятью программисту, а C# исполняется на платформе .NET с автоматической сборкой мусора, что упрощает старт для новичка.



