web-dev-qa-db-fra.com

Que signifie "T" en C #?

J'ai un arrière-plan VB et je me convertis en C # pour mon nouveau travail. J'essaie également de m'améliorer en .NET en général. J'ai vu le mot-clé "T" utilisé beaucoup dans les échantillons que les gens publient. Que signifie le "T" en C #? Par exemple:

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

Que fait T? Pourquoi voudrais-je l'utiliser?

74
Jim

C'est un symbole pour un paramètre de type générique . Cela pourrait tout aussi bien être autre chose, par exemple:

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

Seul T est celui par défaut utilisé et encouragé par Microsoft.

50
user39603

T n'est pas un mot clé en soi mais un espace réservé pour un type générique. Voir Microsoft Introduction aux génériques

La syntaxe VB.Net équivalente serait:

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

Un bon exemple d'un autre nom utilisé au lieu de T would soit les classes de table de hachage, par exemple.

public class Dictionary<K,V> ...

K signifie Clé et V pour valeur. Je pense que T signifie type.

Vous l'avez peut-être vu autour. Si vous pouvez établir la connexion, cela devrait être assez utile.

15
biozinc

Ce serait un "générique". Comme les gens l'ont déjà mentionné, il y a explication Microsoft du concept. Quant à savoir pourquoi le "T" - voir cette question .

En un mot, il vous permet de créer une classe/méthode spécialisée dans un type spécifique. Un exemple classique est le System.Collections.Generic.List<T> classe. C'est la même chose que System.Collections.ArrayList, sauf qu'il vous permet de stocker uniquement les éléments de type T. Cela offre une sécurité de type - vous ne pouvez pas (accidentellement ou autrement) mettre des éléments du mauvais type dans votre liste. Le System.Collections.Generic l'espace de noms contient plusieurs autres types de collections différents qui en font usage.

Quant à savoir où vous pouvez l'utiliser - c'est à vous de décider. Il existe de nombreux cas d'utilisation qui surviennent de temps en temps. Généralement, c'est une sorte de collection autodidacte (lorsque celles intégrées ne suffisent pas), mais cela pourrait vraiment être n'importe quoi.

5
Vilx-

Le meilleur moyen serait de vous familiariser avec les "génériques", de nombreuses ressources sur le web, voici n

T n'est pas un mot-clé mais un nom, pourrait être n'importe quoi pour autant que je sache, mais T est la convention (quand un seul type est nécessaire, de coruse)

4
Yossi Dahan

T est le nom du paramètre type dans une classe générique. Il signifie "Type" mais vous pourriez tout aussi bien l'appeler "Alice".

Vous utilisez des génériques pour augmenter la réutilisabilité de manière sécurisée sans dupliquer inutilement le code. Ainsi, vous n'avez pas besoin d'écrire des classes pour ListOfIntegers, ListOfStrings, ListOfChars, ListOfPersons et ainsi de suite, mais pouvez à la place écrire une classe générique List<T> puis instancier des objets de types List<Int32>, List<string>, List<char> et List<Person>. Le compilateur fait le travail pour vous.

2
jason

Cela signifie "n'importe quelle classe". Ce pourrait être "B", "A", peu importe. Je pense que T est utilisé à cause de "Template"

1
Otávio Décio