使用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之间的区别