0Pricing
C# Academy · Урок

Обобщения в C#

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

«Обобщения в C#» — бесплатный урок C# Academy на CoddyKit. Это урок 1 из 5. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 5 уроков всего.

Введение в обобщения

Обобщения в C#

Добро пожаловать на первый урок раздела «Расширенные возможности C#»! На этом уроке вы узнаете об обобщениях — мощной возможности C#, которая позволяет создавать гибкий и повторно используемый код. Начнем!

Обобщения в C# — иллюстрация 1

Что такое обобщения?

Что такое обобщения?

Обобщения — это возможность C#, позволяющая определять классы, методы и структуры данных с заполнителем для типа данных, которые они хранят или используют. Обобщения обеспечивают безопасность типов и повторное использование кода.

Пример: Обобщенный список (List<T>) может хранить элементы любого типа, обеспечивая при этом безопасность типов.

Создание обобщенных классов

Создание обобщенных классов

Обобщенный класс можно определить с помощью синтаксиса <T>, где T обозначает параметр типа. Пример:

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

using System;

class GenericBox<T> {
    public T Value { get; set; }

    public void Display() {
        Console.WriteLine("Value: " + Value);
    }
}

class Program {
    static void Main() {
        GenericBox<int> intBox = new GenericBox<int> { Value = 42 };
        intBox.Display(); // Outputs: Value: 42

        GenericBox<string> stringBox = new GenericBox<string> { Value = "Hello, Generics!" };
        stringBox.Display(); // Outputs: Value: Hello, Generics!
    }
}

Создание обобщенных методов

Создание обобщенных методов

Обобщенный метод можно определить внутри класса. Пример:

Совет: Используйте обобщенные методы для операций, применимых к нескольким типам данных.

using System;

class Program {
    static void Main() {
        PrintValue(42);
        PrintValue("Generics are powerful!");
    }

    static void PrintValue<T>(T value) {
        Console.WriteLine("Value: " + value);
    }
}

Ограничения обобщений

Ограничения обобщений

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

  • where T : struct — T должен быть типом значения.
  • where T : class — T должен быть ссылочным типом.
  • where T : new() — T должен иметь конструктор без параметров.

Пример:

Главное: Ограничения делают обобщения более гибкими и применимыми в конкретных сценариях.

using System;

class Program {
    static void Main() {
        DisplayDefault<int>();
        DisplayDefault<string>();
    }

    static void DisplayDefault<T>() where T : new() {
        T instance = new T();
        Console.WriteLine("Created instance of: " + typeof(T));
    }
}

Обобщенные коллекции

Обобщенные коллекции

C# предоставляет несколько встроенных обобщенных коллекций:

  • List<T>: Хранит коллекцию элементов в динамическом массиве.
  • Dictionary<TKey, TValue>: Хранит пары «ключ-значение» для быстрого поиска.
  • Queue<T>: Реализует структуру «первым пришел — первым ушел» (FIFO).

Пример: Использование обобщенного списка:

using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        List<string> names = new List<string> { "Alice", "Bob", "Charlie" };
        names.Add("Diana");

        foreach (string name in names) {
            Console.WriteLine(name);
        }
    }
}

Практическое задание

Практическое задание

Создайте обобщенный класс Pair<TKey, TValue>, который хранит пару «ключ-значение», и обобщенный метод Swap(), меняющий местами ключ и значение. Пример:

using System;

class Pair<TKey, TValue> {
    public TKey Key { get; set; }
    public TValue Value { get; set; }

    public void Swap() {
        (Key, Value) = ((TKey)(object)Value, (TValue)(object)Key);
    }

    public void Display() {
        Console.WriteLine($"Key: {Key}, Value: {Value}");
    }
}

class Program {
    static void Main() {
        Pair<string, int> pair = new Pair<string, int> { Key = "Age", Value = 30 };
        pair.Display();
        pair.Swap();
        pair.Display();
    }
}

Рекомендации по использованию обобщений

Рекомендации по использованию обобщений

Вот несколько рекомендаций:

  • Используйте обобщения для создания повторно используемых классов и методов с безопасностью типов.
  • Применяйте ограничения, когда требуются определенные свойства типа.
  • Для повышения производительности и безопасности отдавайте предпочтение обобщенным коллекциям, а не необобщенным.

Совет: Используйте понятные имена параметров типов, например T для типа или TKey и TValue для пар «ключ-значение».

Отличная работа!

Отличная работа!

Поздравляю! Вы научились использовать обобщения для создания повторно используемого и гибкого кода на C#. На следующем уроке мы рассмотрим асинхронное программирование с помощью async и await. Продолжайте программировать!

Обобщения в C# — иллюстрация 10

Часто задаваемые вопросы

Урок «Обобщения в C#» бесплатный?

Да — полный текст урока «Обобщения в C#» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 5 уроков всего.

Чему я научусь в уроке «Обобщения в C#»?

Узнайте, как обобщения позволяют создавать типобезопасные и повторно используемые структуры кода Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C# Academy?

Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 5.

Сколько времени занимает урок «Обобщения в C#»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C# Academy?

Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Обобщения в C#
  2. Async и Await: работа с асинхронным кодом
  3. Потоки и задачи
  4. Делегаты и лямбда-выражения
  5. Рефлексия в C#
← Назад к C# Academy