Перейти к содержанию
# RAIMBALT Learn LEARN · PRACTICE · BUILD
Войти Начать обучение
← Все курсы
C# · Абсолютный ноль → профессиональный уровень

C# с абсолютного нуля до профессиональной разработки

Последовательный курс RAIMBALT Learn: сначала понимание, затем минимальный пример, самостоятельная практика, проверка и проект. Предыдущий опыт программирования не требуется.

90 уроков 12 модулейкаталог доступен без входа
КАК ПРОХОДИТЬ КУРС

Не листай уроки как обычный справочник

Переходи дальше только после того, как можешь воспроизвести идею самостоятельно и понимаешь, зачем она нужна.

01Понятьновую идею
02Повторитьпример руками
03Изменитьи проверить эффект
04Решитьсамостоятельно
05Проверитьпонимание
06Применитьв проекте
КОНТРОЛЬ ЗНАНИЙ

Контрольные точки и итоговый экзамен

После модулей закрепляй материал практикой и проверками. Курс считается освоенным только после выполнения критериев, а не после простого открытия всех страниц.

Войти для прохождения →
ПРОГРАММА

Содержание курса

0 из 90 подтверждено
МОДУЛЬ

00 · Знакомство с программированием

0 / 4 уроков
01

Добро пожаловать в программирование

Начинаем вообще без кода. Сначала разберём, что такое программа, программирование и зачем нужен C#.

Изучить →
02

Как устроено обучение в RAIMBALT Learn

Перед первой строкой кода разберём правила курса: как читать урок, как практиковаться и почему следующий урок бывает закрыт.

Изучить →
03

Подготовка рабочего места: .NET и Visual Studio

Теперь готовим инструменты и учимся отличать решение Visual Studio, проект и обычный файл исходного кода.

Изучить →
04

Первая программа: Console.WriteLine — по символам

Только теперь пишем первую строку C# и разбираем каждый её элемент, а не копируем как заклинание.

Изучить →
МОДУЛЬ

01 · Данные, ввод и вывод

0 / 5 уроков
05

Переменная: как программа запоминает данные

После вывода текста учимся сохранять значение под понятным именем.

Изучить →
06

Типы данных без перегруза: int, string, bool, double, decimal

Разные данные требуют разных типов. Изучаем только те типы, которые уже можно понять на бытовых примерах.

Изучить →
07

Ввод пользователя: Console.ReadLine

Программа начинает взаимодействовать с человеком: задаёт вопрос и получает текстовый ответ.

Изучить →
08

Числа из ввода: int.TryParse

Учимся безопасно превращать текст пользователя в число без падения программы.

Изучить →
09

Арифметика: строим первый настоящий расчёт

Теперь объединяем переменные и числа в понятный расчёт, но без скрытых шагов.

Изучить →
МОДУЛЬ

02 · Условия и логика

0 / 3 уроков
10

if, else if и else: программа принимает решение

Условие превращает программу из последовательности команд в систему, которая реагирует на данные.

Изучить →
11

&&, || и !: несколько условий одновременно

Реальные правила редко состоят из одной проверки. Логические операторы объединяют несколько условий.

Изучить →
12

switch: выбираем действие по значению

Когда программа сравнивает одно значение с несколькими вариантами, switch часто читается проще длинной цепочки if.

Изучить →
МОДУЛЬ

03 · Циклы и перебор данных

0 / 4 уроков
13

for: повторяем действие известное число раз

Цикл for нужен, когда заранее понятно, сколько повторений требуется или нужен индекс.

Изучить →
14

while и do while: повторяем, пока условие истинно

while подходит, когда количество повторений заранее неизвестно и зависит от состояния.

Изучить →
15

foreach: перебираем элементы коллекции

foreach позволяет пройти по каждому элементу массива или списка без ручного управления индексом.

Изучить →
16

break, continue и вложенные циклы

Иногда цикл нужно закончить раньше или пропустить только текущую итерацию.

Изучить →
МОДУЛЬ

04 · Методы

0 / 4 уроков
17

Методы: даём операции имя

Метод — отдельный блок программы с понятным названием. Он помогает не копировать одинаковый код и делить большую задачу на маленькие.

Изучить →
18

return: метод возвращает результат

Иногда метод должен не печатать ответ, а вычислить его и отдать вызывающему коду.

Изучить →
19

Область видимости и перегрузка

Переменная существует только там, где она объявлена. А несколько методов могут иметь одно имя, если отличаются параметры.

Изучить →
20

out, ref и params — когда обычного return мало

C# умеет передавать значения в метод разными способами. Эти возможности полезны, но их нужно применять осознанно.

Изучить →
МОДУЛЬ

05 · Объектно-ориентированное программирование

0 / 8 уроков
21

Класс и объект: создаём свой тип

До этого мы использовали готовые типы. Теперь создадим собственный тип, который описывает реальную сущность.

Изучить →
22

Свойства и инкапсуляция

Публичные поля дают слишком свободный доступ к состоянию. Свойства позволяют сделать интерфейс объекта аккуратнее.

Изучить →
23

Конструктор: объект сразу в корректном состоянии

Конструктор выполняется при `new` и помогает не забыть обязательные данные.

Изучить →
24

Наследование и полиморфизм без магии

Иногда несколько типов имеют общую основу. Наследование позволяет вынести общие данные и поведение, но использовать его нужно только при реальном отношении «является».

Изучить →
25

Интерфейсы: договор между типами

Интерфейс описывает, что объект умеет делать, не привязывая код к одному конкретному классу.

Изучить →
26

Массивы: фиксированный набор элементов

Массив хранит несколько значений одного типа и имеет фиксированный размер.

Изучить →
27

List<T>: коллекция, которая растёт

List похож на массив, но позволяет удобно добавлять и удалять элементы.

Изучить →
28

Dictionary<TKey,TValue>: быстрый доступ по ключу

Dictionary хранит пары ключ → значение, когда нужен поиск не по позиции, а по уникальному ключу.

Изучить →
МОДУЛЬ

06 · Коллекции, строки и данные

0 / 8 уроков
29

LINQ: фильтруем данные понятным кодом

LINQ позволяет описывать выборку из коллекции: что оставить, как преобразовать и как отсортировать.

Изучить →
30

Select, OrderBy и агрегаты

После фильтрации часто нужно получить другой вид данных, отсортировать или посчитать итог.

Изучить →
31

Исключения: try, catch, finally

Исключение сообщает, что во время выполнения произошло нештатное событие.

Изучить →
32

Файлы: сохраняем данные между запусками

Без хранения данных программа забывает состояние после закрытия. Начнём с обычного текстового файла.

Изучить →
33

JSON: сохраняем объекты, а не строки вручную

JSON — текстовый формат данных. В C# объект можно сериализовать в JSON и восстановить обратно.

Изучить →
34

async/await: не блокируем программу во время ожидания

Некоторые операции тратят время не на вычисления, а на ожидание файла, сети или базы данных.

Изучить →
35

Task.WhenAll: несколько независимых операций

Если несколько операций не зависят друг от друга, их часто можно ожидать вместе.

Изучить →
36

Разделяем модель, логику и интерфейс

Большая программа становится неудобной, если ввод, расчёты и хранение данных находятся в одном методе.

Изучить →
МОДУЛЬ

07 · Исключения, файлы и ресурсы

0 / 8 уроков
37

Первый unit-тест: проверяем логику автоматически

Тест запускает небольшой фрагмент логики и проверяет ожидаемый результат.

Изучить →
38

C# + MySQL: зачем приложению база

Файл подходит для простых данных, но многопользовательскому приложению нужны запросы, связи и надёжное хранение.

Изучить →
39

Параметризованный SQL без склейки строк

Пользовательский ввод нельзя безопасно вставлять в SQL через конкатенацию.

Изучить →
40

Консольный проект: клиентская база

Собери фундамент курса в одну программу: модели, коллекции, LINQ, JSON, async и разделение ответственности.

Изучить →
41

Generics: один алгоритм для разных типов

Generics позволяют написать типобезопасный код без копирования почти одинаковых классов.

Изучить →
42

Generic-класс и ограничения

Generic-класс хранит или обрабатывает данные разных типов.

Изучить →
43

Func, Action и передача поведения

Иногда методу нужно передать не данные, а действие или правило.

Изучить →
44

События: объект сообщает, что что-то произошло

Событие уменьшает прямую связанность между источником события и реакциями.

Изучить →
МОДУЛЬ

08 · LINQ и работа с наборами данных

0 / 10 уроков
45

Single Responsibility: класс делает одну работу

Класс, который читает ввод, считает, пишет файл и отправляет email, сложно менять и тестировать.

Изучить →
46

Dependency Injection простыми словами

Зависимость лучше получать снаружи, чем создавать внутри класса через new.

Изучить →
47

GroupBy и работа с отчётами

GroupBy объединяет элементы по ключу и позволяет строить отчёты.

Изучить →
48

Проект: слой бизнес-логики с тестами

Теперь собери не просто консольный скрипт, а небольшой проект с разделением ответственности.

Изучить →
49

Интерфейсы как контракт

В этом уроке тема «Интерфейсы как контракт» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
50

Репозиторий: отделяем хранение данных

В этом уроке тема «Репозиторий: отделяем хранение данных» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
51

Собственные исключения

В этом уроке тема «Собственные исключения» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
52

IDisposable и using

В этом уроке тема «IDisposable и using» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
53

Dictionary и HashSet

В этом уроке тема «Dictionary и HashSet» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
54

SelectMany

В этом уроке тема «SelectMany» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
МОДУЛЬ

09 · Продвинутый C#

0 / 12 уроков
55

Any, All и Contains

В этом уроке тема «Any, All и Contains» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
56

DateOnly, DateTimeOffset и TimeSpan

В этом уроке тема «DateOnly, DateTimeOffset и TimeSpan» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
57

Параметризованные unit-тесты

В этом уроке тема «Параметризованные unit-тесты» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
58

Fake-зависимости в тестах

В этом уроке тема «Fake-зависимости в тестах» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
59

Big O на практике

В этом уроке тема «Big O на практике» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
60

Итог C# Core

В этом уроке тема «Итог C# Core» разбирается не как готовая команда, а как инструмент для конкретной задачи.

Изучить →
61

SOLID на практике

В этом уроке «SOLID на практике» разбирается от проблемы к решению, а не как набор команд.

Изучить →
62

Dependency Inversion

В этом уроке «Dependency Inversion» разбирается от проблемы к решению, а не как набор команд.

Изучить →
63

Dependency Injection

В этом уроке «Dependency Injection» разбирается от проблемы к решению, а не как набор команд.

Изучить →
64

Result pattern

В этом уроке «Result pattern» разбирается от проблемы к решению, а не как набор команд.

Изучить →
65

Domain model

В этом уроке «Domain model» разбирается от проблемы к решению, а не как набор команд.

Изучить →
66

Immutable модели

В этом уроке «Immutable модели» разбирается от проблемы к решению, а не как набор команд.

Изучить →
МОДУЛЬ

10 · Асинхронность и многопоточность

0 / 12 уроков
67

Records глубже

В этом уроке «Records глубже» разбирается от проблемы к решению, а не как набор команд.

Изучить →
68

Pattern matching глубже

В этом уроке «Pattern matching глубже» разбирается от проблемы к решению, а не как набор команд.

Изучить →
69

Generic constraints

В этом уроке «Generic constraints» разбирается от проблемы к решению, а не как набор команд.

Изучить →
70

Span и Memory

В этом уроке «Span и Memory» разбирается от проблемы к решению, а не как набор команд.

Изучить →
71

IAsyncEnumerable

В этом уроке «IAsyncEnumerable» разбирается от проблемы к решению, а не как набор команд.

Изучить →
72

Channel producer/consumer

В этом уроке «Channel producer/consumer» разбирается от проблемы к решению, а не как набор команд.

Изучить →
73

SemaphoreSlim

В этом уроке «SemaphoreSlim» разбирается от проблемы к решению, а не как набор команд.

Изучить →
74

Deadlock mental model

В этом уроке «Deadlock mental model» разбирается от проблемы к решению, а не как набор команд.

Изучить →
75

Retry и idempotency

В этом уроке «Retry и idempotency» разбирается от проблемы к решению, а не как набор команд.

Изучить →
76

Cancellation design

В этом уроке «Cancellation design» разбирается от проблемы к решению, а не как набор команд.

Изучить →
77

Allocation awareness

В этом уроке «Allocation awareness» разбирается от проблемы к решению, а не как набор команд.

Изучить →
78

Benchmark mindset

В этом уроке «Benchmark mindset» разбирается от проблемы к решению, а не как набор команд.

Изучить →
МОДУЛЬ

11 · Архитектура и качество кода

0 / 12 уроков
79

Test doubles

В этом уроке «Test doubles» разбирается от проблемы к решению, а не как набор команд.

Изучить →
80

Integration tests

В этом уроке «Integration tests» разбирается от проблемы к решению, а не как набор команд.

Изучить →
81

Test data builders

В этом уроке «Test data builders» разбирается от проблемы к решению, а не как набор команд.

Изучить →
82

Nullable reference types

В этом уроке «Nullable reference types» разбирается от проблемы к решению, а не как набор команд.

Изучить →
83

Analyzers

В этом уроке «Analyzers» разбирается от проблемы к решению, а не как набор команд.

Изучить →
84

Structured logging

В этом уроке «Structured logging» разбирается от проблемы к решению, а не как набор команд.

Изучить →
85

Secrets и configuration

В этом уроке «Secrets и configuration» разбирается от проблемы к решению, а не как набор команд.

Изучить →
86

Trust boundaries

В этом уроке «Trust boundaries» разбирается от проблемы к решению, а не как набор команд.

Изучить →
87

Background worker

В этом уроке «Background worker» разбирается от проблемы к решению, а не как набор команд.

Изучить →
88

Clean boundaries

В этом уроке «Clean boundaries» разбирается от проблемы к решению, а не как набор команд.

Изучить →
89

Refactoring legacy code

В этом уроке «Refactoring legacy code» разбирается от проблемы к решению, а не как набор команд.

Изучить →
90

Профессиональный C# capstone

В этом уроке «Профессиональный C# capstone» разбирается от проблемы к решению, а не как набор команд.

Изучить →