Учим C# с нуля: первые уроки для начинающих

Учим C# с нуля: первые уроки для начинающих Полезное

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 с автоматической сборкой мусора, что упрощает старт для новичка.

OTUS Журнал
Скидка 5% 14-20 сентября на курсы (popup)