Что означает «Т» в C #?


79

У меня есть опыт работы с VB, и я перехожу на C # для моей новой работы. Я также пытаюсь улучшить .NET в целом. Я видел, как ключевое слово "T" часто используется в примерах, которые публикуют люди. Что означает буква «T» в C #? Например:

public class SomeBase<T> where T : SomeBase<T>, new()

Что Tделать? Зачем мне это использовать?


1
T ~ >> введите: любой, какой хотите
AminM

Ответы:




15

Хорошим примером другого имени, используемого вместо T, wouldявляются классы хеш-таблицы, например

public class Dictionary<K,V> ...

Где Kозначает ключ и Vзначение. Я думаю, это Tозначает тип.

Вы могли это видеть. Если вы можете установить связь, это должно быть довольно полезно.


5

Это было бы «универсальным». Как уже упоминалось, существует объяснение концепции Microsoft . Насчет того, почему именно "Т" - смотрите в этом вопросе .

Вкратце, он позволяет вам создать класс / метод, специализированный для определенного типа. Классический пример - System.Collections.Generic.List<T>класс. Он такой же, как System.Collections.ArrayList, за исключением того, что позволяет хранить только элементы типа T. Это обеспечивает безопасность типов - вы не можете (случайно или иным образом) поместить элементы неправильного типа в свой список. Пространство System.Collections.Genericимен содержит несколько других различных типов коллекций, которые используют это.

А где его использовать - решать вам. Время от времени возникает множество вариантов использования. В основном это какая-то самодельная коллекция (когда встроенных не хватает), но это действительно может быть что угодно.


3

Лучшим способом было бы познакомиться с "Generics", многими ресурсами в Интернете, вот один

T - это не ключевое слово, а имя, может быть что угодно, насколько я знаю, но T - это соглашение (когда нужен только один тип, coruse)


2

Это Tимя параметра типа в универсальном классе. Это означает «Тип», но вы могли бы с таким же успехом назвать его «Алиса».

Вы используете дженерики для повышения возможности повторного использования безопасным для типов способом без ненужного дублирования кода. Таким образом, вам не нужно писать для классов ListOfIntegers, ListOfStrings, ListOfChars, ListOfPersonsи так далее , но вместо этого можно написать универсальный класс , List<T>а затем создавать объекты типов List<Int32>, List<string>, List<char>и List<Person>. Компилятор делает всю работу за вас.


1

Это означает «любой класс». Это может быть «Б», «А», что угодно. Я думаю, что T используется из-за "Template"


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

1
Я считаю, что терминология «шаблон» пришла из шаблонов C ++. Однобуквенный параметр с заглавной буквы пахнет макросами C ++.
Майкл Медоуз,

T определенно отдается той же роли в шаблонах C ++ (но там он по-прежнему сокращается от «Тип» - он заменяет тип, а не шаблон)
Джеймс Карран
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.