Mam tło VB i przechodzę do C # dla mojej nowej pracy. Generalnie staram się też polepszyć .NET. Widziałem słowo kluczowe „T” często używane w próbkach, które ludzie publikują. Co oznacza „T” w języku C #? Na przykład:
public class SomeBase<T> where T : SomeBase<T>, new()
Co robi T
? Dlaczego miałbym go używać?
Odpowiedzi:
Jest to symbol parametru typu ogólnego . Równie dobrze może to być coś innego, na przykład:
public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()
Tylko T jest domyślnym, używanym i zalecanym przez firmę Microsoft.
źródło
T nie jest słowem kluczowym jako takim, ale symbolem zastępczym dla typu ogólnego. Zobacz Wprowadzenie firmy Microsoft do typów ogólnych
Równoważna składnia VB.Net wyglądałaby następująco:
Public Class SomeBase(Of T As {Class, New}))
źródło
Dobrym przykładem innej nazwy używanej zamiast T mogą
would
być klasy tablic mieszających, nppublic class Dictionary<K,V> ...
Gdzie
K
oznacza klucz iV
wartość. Myślę, żeT
oznacza typ.Mogłeś to widzieć dookoła. Jeśli możesz nawiązać połączenie, powinno to być dość pomocne.
źródło
To byłby „ogólny”. Jak już wspomniano, istnieje wyjaśnienie tego pojęcia przez Microsoft . Co do powodu „T” - zobacz to pytanie .
Krótko mówiąc, pozwala na stworzenie klasy / metody, która jest wyspecjalizowana do określonego typu. Klasycznym przykładem jest
System.Collections.Generic.List<T>
klasa. Działa tak samo, jakSystem.Collections.ArrayList
poza tym, że pozwala na przechowywanie tylko danego typuT
. Zapewnia to bezpieczeństwo typów - nie możesz (przypadkowo lub w inny sposób) umieszczać elementów niewłaściwego typu na swojej liście. PrzestrzeńSystem.Collections.Generic
nazw zawiera kilka innych różnych typów kolekcji, które z tego korzystają.Jeśli chodzi o to, gdzie możesz go użyć - to zależy od Ciebie. Istnieje wiele przypadków użycia, które pojawiają się od czasu do czasu. Przeważnie jest to coś w rodzaju własnej kolekcji (jeśli te wbudowane nie wystarczą), ale naprawdę może to być wszystko.
źródło
Najlepszym sposobem byłoby zapoznanie się z „rodzajami generycznymi”, wieloma zasobami w sieci, oto jeden
T nie jest słowem kluczowym, ale nazwą, może to być cokolwiek, o ile wiem, ale T jest konwencją (kiedy potrzebny jest tylko jeden typ, z powodu)
źródło
Plik
T
nazwa parametru typu w klasie ogólnej. To oznacza „typ”, ale równie dobrze możesz nazwać go „Alice”.Używasz typów ogólnych, aby zwiększyć możliwość ponownego wykorzystania w sposób bezpieczny dla typów bez niepotrzebnego powielania kodu. Tak więc, nie trzeba pisać dla klas
ListOfIntegers
,ListOfStrings
,ListOfChars
,ListOfPersons
i tak dalej, ale może zamiast pisać rodzajowe klasyList<T>
i następnie wystąpień obiektów typówList<Int32>
,List<string>
,List<char>
iList<Person>
. Kompilator wykona pracę za Ciebie.źródło
To znaczy „dowolna klasa”. Może to być „B”, „A”, cokolwiek. Myślę, że T jest używany z powodu „Szablon”
źródło