Що означає "Т" у C #?


79

У мене досвід VB, і я переходжу на C # для нової роботи. Я також намагаюся покращити роботу в .NET загалом. Я бачив, як ключове слово "Т" часто використовується у зразках, які публікують люди. Що означає "Т" у 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

Найкращим способом було б ознайомитись із "Дженериками", багатьма веб-ресурсами, ось один

T - це не ключове слово, а назва, наскільки мені відомо, це може бути що-небудь насправді, але T - це домовленість (коли потрібен лише один тип, корупції)


2

Це Tім'я параметра типу у загальному класі. Це розшифровується як "Тип", але ви можете так само назвати це "Аліса".

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


1

Це означає "будь-який клас". Це може бути "B", "A", що завгодно. Я думаю, що T використовується через "Шаблон"


У цьому контексті тип був би доречнішим за клас, оскільки T може бути як посиланням, так і типом значення.
Брайан Расмуссен

1
Я вважаю, що термінологія "Шаблон" походить від шаблонів C ++. Параметр з однієї літери з великої літери пахне макросами С ++.
Майкл Медоус

T, безумовно, віддають перевагу тій самій ролі в шаблонах C ++ (але там все ще скорочено "Type" - він замінює тип, а не шаблон)
Джеймс Керран,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.