这是类型Type的无效用法吗?

时间:2018-12-19 15:11:39

标签: c#

这不是Type所能提供的吗?还有其他方法可以实现以下目标吗?

Type t = typeof(Int32);
List<t> list = new List<t>();

根据docs提到的内容,这对我来说似乎是正确的用法:

  

代表类型声明:类类型,接口类型,数组   类型,值类型,枚举类型,类型参数,泛型   定义以及打开或关闭的构造通用类型

但是我觉得this是一个更好的描述,这意味着我不能使用上述的Type类,因为它似乎只包含有关类型的信息:

  

类型描述数据类型。它将类型信息存储在变量中,   属性或字段。 Type类代表程序的元数据,   这是对其结构的描述,而不是说明   被执行。

我试图使用上面的命令来解决一个问题,其中我有一个“列表”,其中t是用户定义的类型,该列表存储在类型为object的字段中在以后的某个时候需要将其解析回其原始类型,我希望类Type将允许我保留该类型,以便稍后再解析回原始类型。

我在追求这样的东西:

public IList ObjectToList(Type t, object o)
{
    return new List<t>(o);
}

2 个答案:

答案 0 :(得分:1)

这不是有效用法,因为它将无法编译。 Type类代表一个类型声明。 Type t = typeof(Int32);将为您提供System.Type的{​​{1}}对象,并分配给变量Int32。实际上,它不能用作类型。

答案 1 :(得分:0)

不能将运行时变量用作类型标识符。

Type t = typeof(Int32);

实际上在变量Int32中拥有t的类型


您可以使用

List<Int32> list = new List<Int32>();