libreria - metodos de listas en c#
¿Qué es TKey y TValue en un diccionario genérico? (7)
Cuando crea una clase genérica, puede dar cualquier nombre que desee a un tipo genérico. La convención es prefijarlo con "T".
El patrón que a menudo veo es que cuando solo tienes un tipo genérico, se llama "T", pero cuando tienes más de uno, tienen nombres explícitos (como TKey y TValue) para diferenciar entre los diferentes tipos.
Los nombres TKey y TValue en un diccionario me confunden. ¿Se nombraron con esa convención por una razón o podrían haberla nombrado de alguna manera?
es decir, si creo un genérico, ¿también tengo que usar algún tipo de convención de nomenclatura?
Existe una convención para usar T para indicar la clase en la que se basa su clase genérica (por ejemplo, List<T>
). Sin embargo, un diccionario se basa en dos clases, por lo que eligieron distinguirlos con el sufijo Clave y Valor.
Podrían haber elegido cualquier cosa, en otros lugares en otros escenarios que he visto usar T y U, y otras letras posteriores (es decir, V, X, etc.) si se necesitan más clases.
La convención es prefijar nombres de tipo en genéricos con una T mayúscula
Son los tipos de los genéricos. La T mayúscula significa tipo.
List<int> list;
En este ejemplo, la T
es un int
.
Un diccionario es una tienda clave / valor. En el Dictionary<TKey,TValue>
TKey es el tipo de la clave, y TValue es el tipo del valor.
Se recomienda que utilice una convención de nombres similar, si es posible, en sus propios genéricos cuando no hay más de un parámetro de tipo. De lo contrario, obtenemos MyGeneric<Q,R,S,T,U,...>
TKey
es el tipo de clave; TValue
es el tipo del valor.
p.ej
Dictionary<string, int>
está tecleado en una cadena y devuelve un int
Es una convención usar T
para tipos genéricos (comparables con "plantillas" en C ++, etc.).
Si hay un solo tipo ( List<T>
) entonces solo T
está bien (no hay nada más que explicar); pero si hay varios tipos genéricos, la T
prefiere el propósito. Por TKey
tanto, TKey
es el tipo genérico de la "clave", y TValue
del valor. ¡Si ayuda en este caso, si sabe que un diccionario asigna claves a valores!
El intellisense usualmente te dirá lo que significa cada argumento de tipo; por ejemplo con Func<T1,T2,TResult>
:
-
T1
: el tipo del primer parámetro del método que este delegado encapsula. -
T2
: el tipo del segundo parámetro del método que este delegado encapsula. -
TResult
: el tipo del valor de retorno del método que este delegado encapsula.
(tomado de los datos de comentarios del tipo)