Объектно-ориентированный C#

Обобщения (generics) в C#

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

Введение

Обобщения позволяют писать классы или методы с пока не заданным типом T, а конкретный тип выбирается при использовании. Так код пишется один раз и работает с int, string или любым другим типом, а компилятор по-прежнему полностью проверяет типы.

Класс Box<T> хранит значение типа T. Когда вы создаёте new Box<int>(42), T становится int, поэтому свойство Value имеет тип int, и если попытаться присвоить ему строку, компилятор сразу сообщит об ошибке. Тот же класс можно использовать как Box<string> или Box<double>, не переписывая его.

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

C#
Запустить код →
Program.cs
using System;

class Box<T>(T value) { public T Value { get; } = value; }

class Program
{
    static void Main()
    {
        var box = new Box<int>(42);
        Console.WriteLine(box.Value);
    }
}
Результат выполнения
42

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

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

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

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

Все задачи