我尝试将 Object int 的变量类型转换为 var。
我的尝试是:
var dummy = (items[items.Count() - 1].GetType()) items[items.Count()-1];
我不知道我做错了什么,我看不到我的错误,但调试器说只有赋值、递减和“新对象”表达式可以用作命令......但这就是我正在做的......
有人可以告诉我我的错误吗?非常感谢,并为那个“初学者问题”感到抱歉。
您需要使用Convert.ChangeType
var obj = Convert.ChangeType(d, items[items.Count() - 1].GetType());
这是您遇到的错误的根源。
您的编译器将(items[items.Count() - 1].GetType())
其视为表达式,而不是强制转换语句,因此它看到的是
getAValue() (items[items.Count() - 1].GetType())
这没有任何意义。
你应该像其他人所说的那样转换你的变量。
强制转换是一种编译类型操作,您是在告诉编译器:“这个对象是 [在此处插入类型]”。 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";