使用Type变量声明变量

我有这个代码:

Type leftType = workItem[LeftFieldName].GetType(); 

然后我想声明一个该类型的变量:

 leftType someVar; 

那可能吗?

您可以执行类似这样的操作并将它们转换为已知接口。

 var someVar = Convert.ChangeType(someOriginalValue, workItem[LeftFieldName].GetType()); var someVar = Activator.CreateInstance(workItem[LeftFieldName].GetType()); 

如果用dynamic替换var (并且使用.Net 4),则可以在someVar对象上调用您期望的方法。 如果它们不存在,那么你只会得到一个MissingMethodException。

这是不可能的。

变量类型是编译时的概念; 声明一个直到运行时才知道的类型的变量是没有意义的。
你将无法对变量做任何事情,因为你不知道它是什么类型。

您可能正在寻找dynamic关键字。

object x = Activator.CreateInstance(Type)将允许您创建对象。 除此之外你是否可以做很多事情,我不确定。

不,那是不可能的。 必须在编译时知道变量的类型。

您可以声明一个object类型的变量,它将能够存储任何数据类型。

GetType在运行时进行评估,非dynamic声明在编译时(它确实比那更具体,是),所以没有。 即使var也要求你为它指定一个明确类型的值。

你不能这样做。

您可以使用.Net 4的动态类型,但对于早期的.Net版本,唯一适合的类型是object ,稍后您需要通过再次测试.GetType()来分配给object ,这需要手动投射 -键入的变量。

阅读: SO链接:什么是动态c-4-and-var之间的区别