En su ejemplo, List<T>
es una definición de tipo genérico. T
se llama parámetro de tipo genérico. Cuando se especifica el parámetro type como en List<string>
o List<int>
o List<double>
, entonces tiene un tipo genérico. Se puede ver que mediante la ejecución de un código como este ...
public static void Main()
{
var l = new List<string>();
PrintTypeInformation(l.GetType());
PrintTypeInformation(l.GetType().GetGenericTypeDefinition());
}
public static void PrintTypeInformation(Type t)
{
Console.WriteLine(t);
Console.WriteLine(t.IsGenericType);
Console.WriteLine(t.IsGenericTypeDefinition);
}
que imprimirá
System.Collections.Generic.List`1[System.String] //The Generic Type.
True //This is a generic type.
False //But it isn't a generic type definition because the type parameter is specified
System.Collections.Generic.List`1[T] //The Generic Type definition.
True //This is a generic type too.
True //And it's also a generic type definition.
Otra forma de obtener el tipo de definición genérica es directamente typeof(List<>)
o typeof(Dictionary<,>)
.
Ahhhh y todo tiene sentido ahora – Micah
Gran explicación. – wonde