2012-10-03 10 views
5

Ho il seguente codice che sto cercando di eseguire il debugTipo membri oggetto di fusione di array in C# causa un'eccezione

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

    results = func_v1(11, _lv); 

} 

rottura a guardare spettacoli 'risultati' variabile qualcosa di simile sotto

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

e Non riesco a digitare il cast per ottenere i valori da esso

float f = (float)results[0]; genera un'eccezione di cast non valida.

Si prega di aiutarmi a capire che cosa è esattamente questo array di oggetti e come posso ottenere valori da esso.

saluti.

+2

cosa func_v1? ---- –

+1

perché la downvote? la domanda mi sembra ragionevole. upvoted. – x0n

risposta

1

float f = (float)results[0]; genera un'eccezione di cast non valida.

Penso che è necessario

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

La voce di indice 0 non è un float - è un float[,].

0

oggetto ben [] i risultati non ha galleggia in esso. Devi andare in func_v1 e vedere cosa sta restituendo. Evidentemente il suo ritorno è qualcosa che si sta sottomettendo all'oggetto, che potrebbe essere qualsiasi cosa. Dall'output che hai incollato sembra che stia restituendo un array di oggetti con un mix di float e doppi bidimensionali.

Si potrebbe provare a trasmettere (float [,]) i risultati [0], ma ovviamente questo esploderà quando lo si fa su un oggetto che in realtà è un doppio [,]. Se non è possibile modificare func_v1() è necessario avere un interruttore sul tipo di elemento.

cioè .: se (risultati [0] .GetType() == typeof (float [,]))

Problemi correlati