使用Type变量声明变量

时间:2011-01-26 00:42:32

标签: c# c#-4.0

我有这段代码:

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

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

leftType someVar;

这可能吗?

6 个答案:

答案 0 :(得分:23)

您可以执行类似的操作并将其转换为已知界面。

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

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

答案 1 :(得分:10)

这是不可能的。

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

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

答案 2 :(得分:3)

你做不到。

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

阅读:SO link: whats-the-difference-between-dynamicc-4-and-var

答案 3 :(得分:3)

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

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

答案 4 :(得分:3)

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

答案 5 :(得分:2)

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