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]}

而且我无法键入 cast 以从中获取值

float f = (float)results[0];抛出一个无效的强制转换异常。

请帮助我了解这个对象数组到底是什么以及如何从中获取值。

问候。ak

4

4 回答 4

5

您正在使用可以在此处阅读的多维数组:http: //msdn.microsoft.com/en-us/library/2yd9wwz4 (v=vs.71).aspx

你需要适当地投射它

var f = (float[,])results[0]
于 2012-10-03T17:50:20.733 回答
1

float f = (float)results[0];抛出一个无效的强制转换异常。

我想你需要

float[,] f = (float[,])results[0];
double[,] d = (double[,])results[1];
于 2012-10-03T17:50:08.567 回答
1

索引 0 处的项目不是 a float- 它是float[,].

于 2012-10-03T17:50:20.600 回答
0

显然 object[] 结果中没有浮点数。您需要进入 func_v1 并查看它返回的内容。显然,它返回的东西正在被贬低为对象的东西,这可能是任何东西。从您粘贴的输出看来,它返回了一个混合了二维浮点数和双精度数的对象数组。

您可以尝试强制转换 (float[,])results[0],但显然,当您对实际上是 double[,] 的项目执行此操作时,它会爆炸。如果您无法更改 func_v1() 您将需要对项目的类型进行切换。

即: if (results[0].GetType() == typeof(float[,]))

于 2012-10-03T17:56:32.937 回答