2012-11-15 59 views
0

我嘗試將變量類型的Object int轉換爲var。使用變量類型鑄造

我的嘗試是:

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

我不知道我在做什麼錯了,我看不到我的錯誤,但調試說,只有分配,遞減和「新對象」 -expressions可用作一個命令...但這就是我正在做的...

有人可以告訴我我的錯誤嗎? 非常感謝,並對此「初學者問題」感到抱歉。

+1

這是不可能的。你想達到什麼目的? – erikkallen

+0

我有一個具有不同類型對象的Arraylist,我嘗試將它們轉換爲一個var,以從另一個只有一種類型的對象的列表中爲它們賦值。但好的...然後我必須做一個「typeof」開關。謝謝。 – BudBrot

+0

帶你的問題!我們只是不知道你在做什麼以及你想做什麼。 – Sylca

回答

2

您需要使用Convert.ChangeType

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

的問題,因爲在他的問題 –

+0

WOW中不一致,所以我已經-1了OP。謝謝。這是有效的,比「typeof」開關短得多。 – BudBrot

+0

不客氣。 – Adil

1

下面是您遇到的錯誤的來源。

你的編譯器看到(items[items.Count() - 1].GetType())作爲一種表達,而非鑄造語句,所以它認爲是

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

不作任何意義。

你應該像其他人說的那樣施放你的變量。

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"; 
+0

感謝您的解釋。現在我甚至明白我的錯誤。 – BudBrot