C# 创建泛型<;T>;带有包含类型的变量的类型实例

C# 创建泛型<;T>;带有包含类型的变量的类型实例,c#,generics,types,instance,C#,Generics,Types,Instance,是否可以实现以下代码?我知道它不起作用,但我想知道是否有解决办法 Type k = typeof(double); List<k> lst = new List<k>(); Type k=typeof(双); List lst=新列表(); 是的,有: var genericListType = typeof(List<>); var specificListType = genericListType.MakeGenericType(typeof(doub

是否可以实现以下代码?我知道它不起作用,但我想知道是否有解决办法

Type k = typeof(double);
List<k> lst = new List<k>();
Type k=typeof(双);
List lst=新列表();
是的,有:

var genericListType = typeof(List<>);
var specificListType = genericListType.MakeGenericType(typeof(double));
var list = Activator.CreateInstance(specificListType);
var genericListType=typeof(列表);
var specificListType=genericListType.MakeGenericType(typeof(double));
var list=Activator.CreateInstance(specificListType);

更干净的方法可能是使用通用方法。这样做:

static void AddType<T>()
    where T : DataObject
{
    Indexes.Add(typeof(T), new Dictionary<int, T>());
}
static void AddType()
其中T:DataObject
{
Add(typeof(T),newdictionary());
}

我想这就是我想要的。让我再核对一下,我马上把你的答案记下来。我想这里的主要问题是你没有向我们描述你想要什么。你向我们展示了一个失败的尝试,然后问如何实现你想要的。如果你想要答案,而不是猜测,你应该描述你需要做什么,而不是你如何尝试去做。我基本上想创建一个列表,其中类型被指定为类型变量。谢谢David M,你的代码正是我所需要的。对于那些无法回答的人,我很抱歉,因为我没有提供足够的问题。是否可以对泛型方法采用相同的方法?我需要将动态类型传递给方法,我已经在下面的链接上发布了我的问题,您的评论“这可以在C#4.0中实现”让我有点困惑。它不能,至少不能以您显示的方式。C#4仍然要求在编译时指定泛型类型参数;您仍然无法将类型变量作为泛型类型参数传递。如果是问题,请将其表示为问题。指定的代码无法用C#4.0完成。类似问题:对C#4.0的事情感到抱歉。我的意思是答案可以使用C#4.0中的概念,而不一定代码可以在C#4.0中工作。谢谢你编辑DrJokepu。我认为这个问题说得很好——细节恰到好处!我不确定你所说的“索引”是什么意思,它是在别处声明的变量吗?