C#
C# с нуля для школьников, студентов и будущих разработчиков игр: .NET SDK, переменные, ввод и вывод, условия, циклы, списки, строки, методы, классы и интерфейсы.
C# (читается «си шарп») — язык программирования компании Microsoft. Первая версия вышла в 2002 году вместе с платформой .NET; главный автор языка — Андерс Хейлсберг. Сейчас C# и .NET бесплатны, их исходный код открыт, а программы работают в Windows, Linux и macOS.
На C# пишут программы для Windows, сайты и серверы (ASP.NET Core), мобильные приложения и — очень часто — игры: на C# пишутся скрипты (код, который управляет поведением объектов игры) в игровом движке Unity. Поэтому язык популярен у тех, кто хочет делать игры, и у студентов: он строгий, но читается легче, чем C++, а ошибки компилятор находит ещё до запуска программы.
Что такое .NET
Программа на C# переводится компилятором в промежуточный код, а выполняет его среда .NET: она переводит этот код в машинный прямо во время работы и сама освобождает память, которая больше не нужна. Для учёбы нужен .NET SDK — набор для разработчика: компилятор, среда выполнения и команда dotnet, которая создаёт, собирает и запускает программы.
Курс рассчитан на .NET 10 и язык C# 14. Версии с пометкой LTS (долгая поддержка) получают обновления три года: .NET 10 вышла в ноябре 2025 года и поддерживается до ноября 2028-го. Прежняя LTS, .NET 8, поддерживается до 10 ноября 2026 года; программы курса работают и в ней, но для новой установки берите .NET 10.
Что нужно для начала
- Компьютер с Windows, Linux или macOS.
- .NET SDK — бесплатно с официального сайта Microsoft, как поставить — в первом уроке и в справке Как установить .NET SDK.
- Редактор: Visual Studio Community (бесплатна для учёбы и личных проектов, только Windows) или VS Code с расширением C# Dev Kit. Можно и любой текстовый редактор: программы запускаются командой
dotnet run.
Как пройти курс
Уроки идут по порядку: от первой программы до классов, наследования и интерфейсов. Каждый урок опирается на предыдущие, поэтому лучше не перескакивать. Набирайте примеры сами и меняйте их: что будет, если поставить другое число, убрать строку, ошибиться в имени. После каждого урока — несколько вопросов для проверки, в конце — итоговый тест.
В справочнике — короткие ответы на частые вопросы: что значит ошибка NullReferenceException, почему Math.Round(2.5) даёт 2, как перевести строку в число, как прочитать файл и что делать, если вместо русских букв в консоли знаки вопроса. Тем, кто пришёл ради игр, — справка C# в Unity: что из курса пригодится в Unity и чем скрипты для игр отличаются от консольных программ.
Если знаком C++ или Java, многое в C# покажется знакомым; чем языки отличаются, рассказывает справка Чем C# отличается от C++ и Java. Сами языки — в темах C++ и Java.
Курс с нуля
- 1.Установка .NET и первая программаКак поставить .NET SDK, создать проект командой dotnet new console, запустить его через dotnet run, что такое top-level statements и классическая форма с методом Main.
- 2.Переменные и типы данныхКак объявить переменную в C#, какие бывают типы (int, long, double, decimal, bool, char, string), что делает var, как делятся целые числа и почему дробное число выводится с запятой.
- 3.Ввод и вывод, интерполяция строкКак печатать через Console.Write и WriteLine, вставлять значения в строку через $"…", читать ввод Console.ReadLine, переводить его в число и читать несколько чисел из одной строки.
- 4.Условия — if, else и switchКак программа на C# выбирает, что делать: сравнения, if и else, логические && || !, тернарный оператор, switch и выражение switch с шаблонами.
- 5.Циклы — while, for, foreachКак повторять действия в C#: циклы while, do-while, for и foreach, выход break и пропуск continue, вложенные циклы и частые ошибки вроде бесконечного цикла.
- 6.Массивы и списки List<T>Как хранить много значений в C#: массивы, индексы и Length, сортировка Array.Sort, чтение массива с клавиатуры, список List<T> с Add, Remove, Count и чем список удобнее массива.
- 7.Строки — методы и приёмыКак работать со строками в C#: длина и символы, поиск и замена, Substring, Split и Join, перебор символов, char, почему строку нельзя изменить и как перевернуть строку.
- 8.Методы — свои функцииКак писать методы в C#: параметры и return, void, значения по умолчанию и именованные аргументы, перегрузка, ref и out, params, рекурсия и методы в программе без Main.
- 9.Классы, объекты и свойстваЧто такое класс и объект в C#, как описать поля, свойства get и set, конструктор и методы, зачем private, что делает static и почему объекты передаются по ссылке.
- 10.Наследование и интерфейсыКак в C# один класс наследует другой, что делают virtual, override и base, зачем абстрактные классы, как работают интерфейсы и полиморфизм, как переопределить ToString.
Справочник
- C# в Unity — что пригодится из курсаКак C# используется в Unity: скрипты-классы MonoBehaviour, методы Start и Update вместо Main, Debug.Log вместо Console.WriteLine и что из основ языка нужно знать до игр.
- LINQ коротко — Where, Select, OrderBy, SumЧто такое LINQ в C# и как с его помощью отбирать, преобразовывать, сортировать и считать элементы массивов и списков: Where, Select, OrderBy, Sum, Max, Count, First, ToList.
- string и StringBuilder — что выбратьЧем StringBuilder отличается от string в C#, почему склеивать строки в цикле через + медленно, как пользоваться Append, AppendLine, Insert, Replace и когда хватает string.Join.
- «dotnet» не является внутренней или внешней командойЧто делать, если Windows пишет, что dotnet не является командой, PowerShell не распознаёт имя dotnet, а Linux — command not found: установка SDK, новое окно терминала и переменная PATH.
- Как вывести число с двумя знаками после запятойФорматирование чисел в C#: {x:F2} и ToString("F2"), свои шаблоны 0.00 и 0.##, разделители тысяч, ведущие нули, точка вместо запятой через CultureInfo.InvariantCulture.
- Как обработать ошибку — try, catch и finallyИсключения в C#: как поймать ошибку через try и catch, порядок блоков catch, finally, ex.Message, свои исключения через throw и когда вместо исключений лучше TryParse.
- Как округлить число — Math.Round и банковское округлениеПочему Math.Round(2.5) в C# даёт 2, что такое банковское округление, как округлить «по-школьному» через MidpointRounding.AwayFromZero, до знаков после запятой, вниз и вверх.
- Как перевести строку в число — int.Parse и TryParseПеревод строки в число в C#: int.Parse, int.TryParse, Convert.ToInt32, double.Parse и запятая в русских настройках, число в строку — ToString, ошибки FormatException и OverflowException.
- Как получить случайное число — Random и Random.SharedСлучайное число в C#: Random.Next с границами, почему верхняя граница не входит, Random.Shared, дробное случайное, случайный элемент массива, перемешивание и числа для паролей.
- Как прочитать и записать файл — File.ReadAllTextЧтение и запись текстовых файлов в C#: File.ReadAllText, ReadAllLines, ReadLines, WriteAllText и AppendAllText, где программа ищет файл, ошибка FileNotFoundException и кодировка 1251.
- Как сделать паузу в консоли — окно закрывается сразуЧто делать, если консольное окно программы на C# сразу закрывается: Console.ReadKey и ReadLine, запуск без отладки в Visual Studio, а также задержка Thread.Sleep и Task.Delay.
- Как сравнить строки — ==, Equals и без учёта регистраКак сравнивать строки в C#: == и Equals, без учёта регистра через StringComparison.OrdinalIgnoreCase, порядок по алфавиту через string.Compare и CompareTo, Ordinal и культура.
- Как установить .NET SDKКак поставить .NET SDK в Windows, Ubuntu и macOS, чем SDK отличается от Runtime, какую версию выбрать и как проверить установку командами dotnet --version и --list-sdks.
- Ошибка IndexOutOfRangeExceptionПочему C# пишет Index was outside the bounds of the array, чем это отличается от ArgumentOutOfRangeException у списка и как исправить: границы цикла, пустой массив, args, индекс с конца.
- Ошибка NullReferenceExceptionЧто значит NullReferenceException — Object reference not set to an instance of an object, почему переменная оказалась null, как найти место и исправить: проверка, ?. и ??.
- Русские буквы в консоли — знаки вопроса и кракозябрыЧто делать, если программа на C# выводит вместо русских букв знаки вопроса или непонятные символы: Console.OutputEncoding, ввод русских букв в Windows, кодировка файла с кодом.
- Чем C# отличается от C++ и JavaСравнение C#, C++ и Java: как выполняются программы, работа с памятью, синтаксис, наследование, сравнение строк, где какой язык применяют и какой выбрать для учёбы.
Официальная документация
- Документация по C# (Microsoft Learn) — https://learn.microsoft.com/ru-ru/dotnet/csharp/
- Загрузка .NET SDK — https://dotnet.microsoft.com/download
- Команда dotnet и её возможности — https://learn.microsoft.com/ru-ru/dotnet/core/tools/