Generics

0.0(0)
Studied by 0 people
call kaiCall Kai
Locked
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
GameKnowt Play
Card Sorting

1/11

encourage image

There's no tags or description

Looks like no tags are added yet.

Last updated 1:42 PM on 7/4/26
Name
Mastery
Learn
Test
Matching
Spaced
Call with Kai
Chat

No analytics yet

Send a link to your students to track their progress

12 Terms

1
New cards

Generics?

Механизм, позволяющий писать классы/методы/интерфейсы, работающие с любым типом данных, который указывается при использовании, а не жёстко задан заранее.

2
New cards

Зачем нужны если есть object?

Generics дают типобезопасность на этапе компиляции и не требуют боксинга/анбоксинга — это быстрее и безопаснее, чем работа через object с постоянными приведениями типов.

3
New cards

Что такое T в Container<T>?

Параметр типа (type parameter) — placeholder, который заменяется конкретным типом в момент использования класса/метода.

4
New cards

constraint?

Условие после where, которое ограничивает, какие типы можно подставить вместо T (например, требует наличие интерфейса, конструктора, или что тип — класс/структура, можно использовать сразу несколько).

5
New cards

Что означает where T : class?(struct)

T должен быть ссылочным типом (reference type) — подходят классы, интерфейсы, делегаты, массивы. Value-типы (int, struct) не подходят.

T должен быть значимым типом

6
New cards

Что означает where T : new()?

T обязан иметь публичный конструктор без параметров — это нужно, чтобы внутри generic-кода можно было писать new T().

7
New cards

Что означает where T : IComparable<T>?

T обязан реализовывать интерфейс IComparable<T>, то есть иметь метод CompareTo — это позволяет сравнивать объекты типа T (используется, например, в FindMax).

8
New cards

Что делает CompareTo и что означают его результаты?

Сравнивает текущий объект с other. Возвращает: отрицательное число если меньше, 0 если равны, положительное число если больше.

9
New cards

Как строки сравниваются через CompareTo?

лексикографически (по алфавиту), посимвольно слева направо, пока не найдётся первое различие.

10
New cards

Что такое IComparer<T>?

Интерфейс с методом Compare(T a, T b) — отдельный, внешний объект, который умеет сравнивать два объекта типа T определённым, самостоятельно заданным способом.

11
New cards

В чём разница между IComparable<T> и IComparer<T>?

IComparable<T> — класс сам объявляет, как сравнивать себя с другим объектом своего типа (встроенная, "стандартная" логика). IComparer<T> — отдельный внешний объект, который задаёт альтернативный способ сравнения, не трогая сам класс.

12
New cards

Какой метод нужно реализовать в IComparer<T>?

Как использовать IComparer<T> при сортировке?

int Compare(T a, T b) — возвращает отрицательное число если a меньше b, 0 если равны, положительное если a больше b (та же логика знака, что и в CompareTo).

Передать экземпляр компаратора вторым параметром в метод сортировки: Array.Sort(array, new MyComparer()) или list.Sort(new MyComparer()).