2012-10-03 68 views
5

tengo el siguiente código que estoy tratando de depurarTipo miembros de la matriz de objetos de fundición en C# hace una excepción

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

    results = func_v1(11, _lv); 

} 

Rompiendo a ver programas de 'Resultados' variables algo parecido a continuación

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

y No puedo escribir el molde para obtener los valores

float f = (float)results[0]; arroja una excepción de conversión no válida.

Ayúdeme a comprender qué es exactamente esta matriz de objetos y cómo puedo obtener valores de ella.

respetos. ak

+2

lo func_v1? ---- –

+1

por qué el downvote? la pregunta me parece razonable. votado. – x0n

Respuesta

1

float f = (float)results[0]; arroja una excepción de lanzamiento no válido.

creo que es necesario

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

El elemento en el índice 0 no es un float - es un float[,].

0

objeto claramente [] resultados no tiene flota en ella. Debes entrar en func_v1 y ver qué devuelve. Evidentemente, devuelve algo que está siendo enviado a objetos, lo que podría ser cualquier cosa. Desde la salida que pegaste, parece que está devolviendo una matriz de objetos con una combinación de flotantes y dobles bidimensionales.

Puede intentar lanzar (flotar [,]) resultados [0], pero obviamente eso explotará cuando lo haga en un elemento que es en realidad un doble [,]. Si no puede cambiar func_v1() tendrá que activar el tipo de elemento.

es decir si .: (resultados [0] .GetType() == typeof (float [,]))

Cuestiones relacionadas