2012-10-03 31 views
5

我有下面的代碼,我試圖調試類型轉換對象數組成員會導致異常

int ll(ref float[,] _lv) { 
    object[] results = new object[20]; 

    results = func_v1(11, _lv); 

} 

打破觀看可變成績將會顯示類似下面

results {object[11]} 
+ [0] {float[1,1]} 
+ [1] {double[1,1]} 
+ [2] {float[48,1]} 
    ... 
    ... 
+ [10] {float[1,1]} 

和我不能強制類型轉換得到的值從它

float f = (float)results[0];拋出一個無效轉換異常。

請幫助我瞭解究竟什麼是這個對象數組,我怎麼能得到價值出來。

關於。 ak

+2

什麼func_v1?---- –

+1

爲什麼downvote?問題對我來說看起來合理。 upvoted。 – x0n

回答

1

float f = (float)results[0];將拋出無效的轉換異常。

我想你需要

float[,] f = (float[,])results[0]; 
double[,] d = (double[,])results[1]; 
1

項索引0不是float - 這是一個float[,]

0

顯然[對象]的結果沒有在它浮動。您需要進入func_v1並查看它返回的內容。很明顯,它將某件事情傳遞給對象,這可能是任何事情。從輸出您粘貼它看起來像它返回與二維和雙精度浮點數的混合對象數組。

你可以嘗試投(浮動[,])結果[0],但顯然,這將炸燬,當你做它是在現實中的雙項[,]。如果你不能改變func_v1(),您將需要對項目類型的開關。

即:如果(結果[0] .GetType()== typeof運算(浮動[,]))