Was bedeutet "T" in C #?

79

Ich habe einen VB-Hintergrund und konvertiere für meinen neuen Job zu C #. Ich versuche auch, bei .NET im Allgemeinen besser zu werden. Ich habe gesehen, dass das Schlüsselwort "T" in Beispielen, die von Leuten gepostet wurden, häufig verwendet wird. Was bedeutet das "T" in C #? Zum Beispiel:

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

Was macht Tdas Warum sollte ich es benutzen wollen?

Jim
quelle
1
T ~ >> Typ: jeder Typ, den Sie wollen
AminM

Antworten:

50

Es ist ein Symbol für einen generischen Typparameter . Es könnte genauso gut etwas anderes sein, zum Beispiel:

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

Nur T ist die Standardeinstellung, die von Microsoft verwendet und empfohlen wird.

user39603
quelle
45

T ist an sich kein Schlüsselwort, sondern ein Platzhalter für einen generischen Typ. Siehe Microsoft Einführung in Generika

Die äquivalente VB.Net-Syntax wäre:

Public Class SomeBase(Of T As {Class, New}))
Rob Walker
quelle
15

Ein gutes Beispiel für einen anderen Namen, der anstelle von T verwendet wird would, sind die Hash-Tabellenklassen, z

public class Dictionary<K,V> ...

Wo Ksteht für Schlüssel und Vfür Wert. Ich denke Tsteht für Typ.

Vielleicht haben Sie das schon gesehen. Wenn Sie die Verbindung herstellen können, sollte dies ziemlich hilfreich sein.

Biozink
quelle
5

Das wäre ein "Generic". Wie bereits erwähnt, gibt es eine Microsoft-Erklärung des Konzepts. Warum das "T" - siehe diese Frage .

Kurz gesagt, Sie können eine Klasse / Methode erstellen, die auf einen bestimmten Typ spezialisiert ist. Ein klassisches Beispiel ist die System.Collections.Generic.List<T>Klasse. Es ist dasselbe wie System.Collections.ArrayList, außer dass Sie nur Artikel vom Typ speichern können T. Dies bietet Typensicherheit - Sie können keine (versehentlich oder anderweitig) Elemente des falschen Typs in Ihre Liste aufnehmen. Der System.Collections.GenericNamespace enthält mehrere andere Sammlungstypen, die davon Gebrauch machen.

Wo Sie es verwenden können, liegt ganz bei Ihnen. Es gibt viele Anwendungsfälle, die von Zeit zu Zeit auftreten. Meistens ist es eine Art selbstgemachte Sammlung (wenn die eingebauten nicht ausreichen), aber es könnte wirklich alles sein.

Vilx-
quelle
3

Am besten machen Sie sich mit "Generics" vertraut, vielen Ressourcen im Web. Hier ist eine

T ist kein Schlüsselwort, sondern ein Name, könnte meines Wissens alles sein, aber T ist die Konvention (wenn nur ein Typ benötigt wird, von coruse)

Yossi Dahan
quelle
2

Dies Tist der Name für den Typparameter in einer generischen Klasse. Es steht für "Typ", aber man könnte es genauso gut "Alice" nennen.

Sie verwenden Generika, um die Wiederverwendbarkeit typsicher zu erhöhen, ohne den Code unnötig zu duplizieren. So brauchen Sie nicht zu schreiben Klassen für ListOfIntegers, ListOfStrings, ListOfChars, ListOfPersonsund so weiter , sondern kann stattdessen eine generische Klasse schreiben List<T>und dann instantiate Objekte von Typen List<Int32>, List<string>, List<char>und List<Person>. Der Compiler erledigt die Arbeit für Sie.

Jason
quelle
1

Es bedeutet "jede Klasse". Es könnte "B", "A" sein, was auch immer. Ich denke, T wird wegen "Vorlage" verwendet

Otávio Décio
quelle
Typ wäre in diesem Zusammenhang geeigneter als Klasse, da T sowohl ein Referenz- als auch ein Werttyp sein kann.
Brian Rasmussen
1
Ich glaube, dass die Terminologie "Vorlage" von C ++ - Vorlagen stammt. Der aus Großbuchstaben großgeschriebene Parameter riecht nach C ++ - Makros.
Michael Meadows
T wird definitiv für die gleiche Rolle in C ++ - Vorlagen bevorzugt (aber dort ist es immer noch die Abkürzung für "Typ" - es ersetzt einen Typ, keine Vorlage)
James Curran