Обучение программированию на C#
В этом разделе собраны все учебные материалы по языку C# и платформе .NET. Здесь есть уроки для новичков, углублённые темы для тех, кто уже пишет код, разборы ошибок, примеры оконных приложений, работа с файлами и базами данных, а также статьи о Visual Studio и отладке.
Новичку лучше начать с рубрики основ, затем перейти к объектно-ориентированному программированию и коллекциям, а после подключать графический интерфейс и данные. Если вы застряли на конкретной ошибке, откройте рубрику с решениями: там причины сообщений компилятора и готовые исправления.
Основы C#Углублённое изучениеОшибки и их решенияGUI и визуальные компонентыДанные и базы данныхИнструменты и среды разработки
Pattern matching и switch в C# с примерамиPattern matching в C#: switch expression, оператор is, шаблоны типов, свойств, реляционные, логические and/or/not и шаблоны списков.
Обобщения (generics) в C#: полное руководствоОбобщения в C# на примерах: обобщённые классы и методы, ограничения where, ковариантность и контравариантность, частые ошибки и вопросы.
Лямбда-выражения в C# с примерамиЛямбда-выражения в C#: оператор =>, Func и Action, замыкания, использование в LINQ, статические лямбды и ошибки с примерами кода.
LINQ в C#: примеры запросов к коллекциямLINQ в C# на практике: Where, Select, OrderBy, GroupBy, Join, First и Single, Any и All, Sum и Count, отложенное выполнение и два синтаксиса.
Делегаты и события в C#: полное руководствоДелегаты и события в C# на примерах: delegate, Action, Func, Predicate, мультикаст, ключевое слово event, EventHandler, подписка и отписка.
Абстрактные классы в C# на примерахАбстрактные классы в C#: как объявлять abstract-методы и свойства, чем отличаются от интерфейсов, когда что выбирать, с примерами кода.
Ввод и вывод в консоль на C#Как читать и выводить данные в консоли C#: Console.ReadLine, WriteLine, ReadKey, TryParse, форматированный вывод, цвета текста и частые ошибки.
Типы данных в C#Разбор типов данных C#: значимые и ссылочные, int, double, decimal, string, var, nullable, преобразования, typeof и default с примерами.
Свойства get и set в C#Как работают свойства в C#: get и set, автосвойства, init, вычисляемые свойства, проверка значений в set, required и отличие свойств от полей.
Строки в C#: основные методы StringРазбор строк в C#: Substring, Replace, Split, Trim, IndexOf, Contains, интерполяция, форматирование, неизменяемость и StringBuilder с примерами.
Ref, out и in в C#: передача по ссылкеКак передавать параметры по ссылке в C#: чем ref отличается от out и in, зачем нужен TryParse, ref return и сравнительная таблица.
Полиморфизм в C#: виды и примеры кодаПолиморфизм в C# простыми словами: виртуальные и абстрактные методы, перегрузка, разница между new и override, рабочие примеры кода.
Перечисления enum в C#: объявление и работаКак объявить enum в C#, выбрать базовый тип, использовать [Flags], перебирать значения, применять Enum.TryParse и switch. Примеры кода.
Модификаторы доступа в C#Какие бывают модификаторы доступа в C#: public, private, protected, internal, protected internal и private protected, таблица и значения по умолчанию.
Циклы while и do while в C#Как работают циклы while и do while в C#: отличия, break и continue, бесконечный цикл, примеры с вводом и сравнение с for и foreach.
ComboBox в C# WinForms: руководствоКак работать с ComboBox в C# WinForms: добавление элементов, DataSource, DisplayMember, ValueMember, SelectedIndexChanged, DropDownStyle, автодополнение.
Регулярные выражения (Regex) в C#Как работать с Regex в C#: IsMatch, Match, Matches, Replace, Split, группы, RegexOptions, шаблоны email и телефона, производительность и GeneratedRegex.
Работа с файлами в C#: полное руководствоКак читать и записывать файлы в C#: File.ReadAllText, WriteAllText, StreamReader, using, кодировки, Path, Directory и асинхронное чтение с примерами.
Форматирование десятичных чисел с 2 знаками в C#Как вывести decimal и double с двумя знаками после запятой в C#: форматные строки F2 и N2, Math.Round, ToString и учёт культуры. Примеры кода и частые ошибки.
Аутентификация в Active Directory с помощью C#Как проверить имя пользователя и пароль через Active Directory в C#: System.DirectoryServices.AccountManagement, ValidateCredentials и обработка ошибок.
Изменение элемента формы из другой формы в C#Как изменить элемент управления одной формы из другой в Windows Forms на C#: через публичные свойства, события, делегаты и передачу ссылки на форму.
Определение вызывающего метода в C#: руководствоКак узнать, какой метод вызвал текущий, в C#: класс StackTrace, атрибут CallerMemberName и отражение. Сравнение способов по скорости и надёжности с примерами.
Unity API из другого потока и вызов в главном потокеПочему Unity API нельзя вызывать из фонового потока и как передать вызов в главный: очередь действий, SynchronizationContext и корутины. Примеры на C#.
Преобразование номера столбца Excel в буквы на C#Как преобразовать номер столбца Excel в буквенный адрес, например 27 в AA, на C#: алгоритм с делением на 26, готовая функция, обратное преобразование и примеры.
Отправка писем через Gmail в C# и .NETКак отправить письмо через Gmail из приложения на C# и .NET: настройка SmtpClient, пароль приложения, порты и SSL, вложения и разбор типичных ошибок доступа.
Журнал ошибок загрузки сборок Fusion в .NETКак включить журнал привязки сборок Fusion в .NET, найти причину ошибки FileNotFoundException при загрузке библиотеки и настроить вывод логов в папку.
Асинхронный ввод-вывод в C#: ограничение параллелизмаКак ограничить число одновременных асинхронных операций I/O в C#: SemaphoreSlim, Parallel.ForEachAsync и TPL Dataflow. Примеры кода и сравнение подходов.
Проблемы с привязкой DependencyProperty в WPFПочему не работает привязка DependencyProperty в WPF на C#: неверный DataContext, регистрация свойства и режим Binding. Способы диагностики и исправления.
Почему не нужно наследоваться от List<T> в C#Почему не стоит наследовать свой класс от List<T> в C#: проблемы инкапсуляции, гибкости, сериализации и принципа Лисков, а также лучшие альтернативы.
Почему целочисленное деление в C# не возвращает floatПочему 5 / 2 в C# даёт 2, а не 2.5: правила типов при делении, приведение к double и decimal, остаток от деления и частые ошибки в расчётах. Примеры кода.