0

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

我的尝试是:

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

我不知道我做错了什么,我看不到我的错误,但调试器说只有赋值、递减和“新对象”表达式可以用作命令......但这就是我正在做的......

有人可以告诉我我的错误吗?非常感谢,并为那个“初学者问题”感到抱歉。

4

3 回答 3

2

您需要使用Convert.ChangeType

var obj = Convert.ChangeType(d, items[items.Count() - 1].GetType());
于 2012-11-15T14:59:26.463 回答
1

这是您遇到的错误的根源。

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

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

这没有任何意义。

你应该像其他人所说的那样转换你的变量。

于 2012-11-15T14:57:58.627 回答
1

强制转换是一种编译类型操作,您是在告诉编译器:“这个对象是 [在此处插入类型]”。 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";
于 2012-11-15T15:00:45.140 回答