Почему дженерики часто используют T?

Есть ли причина для использования буквы «Т» в дженериках? Это какая-то аббревиатура? Насколько я знаю, все работает. Например

public G Say<G>(){ ... }

или даже

public Hello Say<Hello>(){ ... }

Спросил и здесь что-значит-в-с?.

nawfal 17.01.2014 17:32
Как создавать пользовательские общие типы в Python (50/100 дней Python)
Как создавать пользовательские общие типы в Python (50/100 дней Python)
Помимо встроенных типов, модуль типизации в Python предоставляет возможность определения общих типов, что позволяет вам определять типы, которые могут...
11
1
2 083
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

T для типа, как вы и сказали, все работает нормально, но вставка T в это место напоминает вам, что это общий тип.

о, я бы подумал, что Т за Вещь :)

Я думал, что это не для "Это круто!"

Robert Gould 17.12.2008 13:02

Я думал, что это Т для 2 из 4.

Daniel Earwicker 17.12.2008 13:15

Это просто сокращение, как я обычно используется для интерфейсов в .NET, а в других средах C иногда используется для классов (Delphi использует это, IIRC).

Обычно «T» само по себе означает «параметр единственного типа в этом контексте», и если у вас есть несколько параметров типа, они получают префикс T, например Dictionary<TKey, TValue>. Когда вы читаете код, становится очевидным, что это параметр типа, а не конкретный конкретный тип.

T for Type

Кроме того, E используется для Element, который тоже очень распространен. Вы правы, G тоже работает.

Ответ принят как подходящий

T для Тype. Но на самом деле это просто традиция, и ничто не мешает вам использовать другие имена. Например, универсальные словари используют <TKey, TValue>.

Также существует Рекомендации Microsoft, который рекомендует использовать букву Т, если у вас есть параметр одного типа, и префикс к именам описательных параметров с помощью Т, если у вас более одного. Это обеспечит более единообразное ощущение в вашем коде.

Также может быть немного традиции, поскольку шаблоны C++ используют T большую часть времени, а универсальные шаблоны аналогичны по функциям шаблонам C++, когда используются для общего программирования.

Если ваш общий тип представляет что-то особенное, вы можете сделать его более точным .. Обычно перед ним стоит префикс T: IRepository<TEntity>, SomeCollection<TItem, TComparer> ..

Я подумал, что это T для Template, потому что он впервые появился на C++.

Другие вопросы по теме