gpt4 book ai didi

.net - 泛型类型和泛型类型定义之间有什么区别?

转载 作者:行者123 更新时间:2023-12-03 12:11:01 26 4
gpt4 key购买 nike

我正在研究 .net 反射,并且很难弄清楚其中的区别。

据我了解,List<T>是泛型类型定义。这是否意味着 .net 反射 T 是泛型类型?

具体来说,我想我正在寻找有关 Type.IsGenericType 和 Type.IsGenericTypeDefinition 函数的更多背景知识。

谢谢!

最佳答案

在您的示例中 List<T>是泛型类型定义。 T称为泛型类型参数。当类型参数被指定为 List<string> 时或 List<int>List<double>那么你就有了一个泛型类型。你可以通过运行一些这样的代码来看到......

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);
}

哪个会打印
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.

另一种直接获取泛型类型定义的方法是 typeof(List<>)typeof(Dictionary<,>) .

关于.net - 泛型类型和泛型类型定义之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2564745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com