使用包含类型的变量创建泛型类型实例
在 C# 中,您可能觉得无法直接使用包含类型的变量来实例化泛型类型,这似乎违反直觉。以下代码说明了这个问题:
<code class="language-c#">Type k = typeof(double); List<k> lst = new List<k>(); // 编译错误</code>
这段代码无法编译,因为它试图使用变量 k 来指定泛型类型。但是,可以使用一种变通方法来实现所需的功能。
要使用包含类型的变量创建泛型类型实例,您可以利用反射和 Activator.CreateInstance():
<code class="language-c#">var genericListType = typeof(List<>); var specificListType = genericListType.MakeGenericType(typeof(double)); var list = Activator.CreateInstance(specificListType);</code>
这段代码的工作原理如下:
genericListType
获取泛型 List<>
类型定义。MakeGenericType()
获取泛型类型定义并指定实际类型参数(在本例中为 double
)。Activator.CreateInstance()
使用指定的类型参数实例化特定的泛型类型。以上是如何使用类型变量在 C# 中实例化泛型类型?的详细内容。更多信息请关注PHP中文网其他相关文章!