我不认为在C#中可以做到这一点,但发布这篇文章只是为了确保。这就是我的问题。我想在C#中做一些类似的事情:
var x = 10;
var l = new List<typeof(x)>();或
var x = 10;
var t = typeof(x);
var l = new List<t>();但这当然行不通。尽管这应该不是问题,因为类型t是在编译时解析的。我知道这个问题可以用反射来解决,但是因为类型是在编译时就知道的,所以使用反射就有点夸张了。
发布于 2009-08-31 17:55:55
public static List<T> CreateCompatibleList<T> (T t)
{
return new List<T> () ;
}
var x = 10 ;
var l = CreateCompatibleList (x) ;发布于 2009-08-31 17:55:38
您正在尝试让.Net使用运行时操作符设置泛型类型。如你所知,这是行不通的。泛型类型必须在编译时设置。
发布于 2009-08-31 17:54:37
在C#中定义泛型如下所示:
var someList = new List<int>();你不能像这样定义泛型:定义泛型:
var x = 1;
var someType = typeof(x);
var someList = new List<someType>();因为在本例中是在运行时指定类型,而不是在编译时指定类型。C#不支持这一点。
https://stackoverflow.com/questions/1358577
复制相似问题