首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#中具有类型参数的泛型类型

C#中具有类型参数的泛型类型
EN

Stack Overflow用户
提问于 2009-08-31 17:51:13
回答 4查看 5K关注 0票数 14

我不认为在C#中可以做到这一点,但发布这篇文章只是为了确保。这就是我的问题。我想在C#中做一些类似的事情:

代码语言:javascript
复制
var x = 10;
var l = new List<typeof(x)>();

代码语言:javascript
复制
var x = 10;
var t = typeof(x);
var l = new List<t>();

但这当然行不通。尽管这应该不是问题,因为类型t是在编译时解析的。我知道这个问题可以用反射来解决,但是因为类型是在编译时就知道的,所以使用反射就有点夸张了。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-08-31 17:55:55

代码语言:javascript
复制
public static List<T> CreateCompatibleList<T> (T t)
{
    return new List<T> () ;
}

var x = 10 ;
var l = CreateCompatibleList (x) ;
票数 41
EN

Stack Overflow用户

发布于 2009-08-31 17:55:38

您正在尝试让.Net使用运行时操作符设置泛型类型。如你所知,这是行不通的。泛型类型必须在编译时设置。

票数 6
EN

Stack Overflow用户

发布于 2009-08-31 17:54:37

在C#中定义泛型如下所示:

代码语言:javascript
复制
var someList = new List<int>();

你不能像这样定义泛型:定义泛型:

代码语言:javascript
复制
var x = 1;
var someType = typeof(x);
var someList = new List<someType>();

因为在本例中是在运行时指定类型,而不是在编译时指定类型。C#不支持这一点。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1358577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档