使用变量Type进行转换

时间:2012-11-15 14:55:03

标签: c# casting

我尝试将变量类型的Object int强制转换为var。

我的尝试是:

var dummy = (items[items.Count() - 1].GetType()) items[items.Count()-1];

我不知道我做错了什么,我无法看到我的错误,但是调试器说只有分配,减少和“新对象” - 表达可以用作命令......但这就是我正在做的事情...

有人可以告诉我我的错误吗? 非常感谢,并为“beginnerquestion”感到抱歉。

3 个答案:

答案 0 :(得分:2)

您需要使用Convert.ChangeType

var obj = Convert.ChangeType(d, items[items.Count() - 1].GetType());

答案 1 :(得分:1)

这是您遇到的错误来源。

您的编译器将(items[items.Count() - 1].GetType())视为表达式而不是转换语句,因此它看到的是

getAValue() (items[items.Count() - 1].GetType())

没有任何意义。

你应该像其他人所说的那样施展你的变量。

答案 2 :(得分:1)

Casting是一个编译类型的操作,你告诉编译器:“这个对象是[insert here here]”。 GetType()是一个返回特定类型(类型Type)的运行时方法。因此存在一些问题,您无法在编译时构造中使用运行时方法。其次,在这种情况下,您实际上是在Type进行投射(假设这是可能的)而不是String(假设GetType()返回String)。

我不确定你要完成什么,但这可能就是你想做的事:http://msdn.microsoft.com/en-us/library/dtb69x08.aspx

此外,我认为您可能无法理解var是什么(基于您的一些评论)。你将“转换为var”,var本质上是一个允许编译器推断类型的快捷方式。所以像这样:

var myString = "this is a test";

相当于:

string myString = "this is a test";