Упражнения C#

Обобщённый репозиторий в памяти на C#

В этом уроке вы создадите обобщённый класс репозитория (repository), который может хранить данные любого типа, сохраняя безопасность типов.

Введение

Репозиторий (repository) - промежуточный слой, который отвечает за хранение и получение данных. Если написать его обобщённо, одна реализация подойдёт для многих типов данных, например пользователей, товаров или заказов, без каких-либо приведений типов.

Класс Repository<T> хранит данные в private List<T>. Если создать new Repository<string>(), репозиторий принимает только строки, а попытку добавить другой тип отметит компилятор. Свойство All возвращает IReadOnlyList<T>, который позволяет читать список, но не менять его снаружи.

Пример на C#, который можно запустить

C#
Запустить код →
Program.cs
using System;
using System.Collections.Generic;
class Repository<T>
{
    private readonly List<T> _items = new();
    public void Add(T item) => _items.Add(item);
    public IReadOnlyList<T> All => _items;
}
class Program
{
    static void Main() { var repo = new Repository<string>(); repo.Add("C#"); Console.WriteLine(repo.All[0]); }
}
Результат выполнения
C#

Практика с отладчиком

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

Попрактикуйтесь на задаче

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

Все задачи