如何从
访问第一个值object t = (object) wsf.LinEst(y.ToArray(), x.ToArray(), false, true);
输出
object[1..5, 1..2]}
[1, 1]: 0.17134831460674155
[1, 2]: 0.0
[2, 1]: 0.019612696690686725
[2, 2]: -2146826246
[3, 1]: 0.95020429009193053
[3, 2]: 0.82746057986828336
[4, 1]: 76.328205128205056
[4, 2]: 4.0
[5, 1]: 52.261235955056179
[5, 2]: 2.7387640449438226
我只需要获得[1,1]的值,即0.17134831460674155
如何做到。
linEst只返回一个对象。
我正在使用C#3.0
由于
由于
答案 0 :(得分:2)
好吧,它看起来像你可以枚举哪些返回双倍 - 虽然它可能实际上没有实现IEnumerable<double>
。试试这个(在代码顶部有一个using System.Linq;
指令):
IEnumerable t = (IEnumerable) wsf.LinEst(y.ToArray(), x.ToArray(), false, true);
double first = t.Cast<double>().First();
然而,如果实际上它返回int[][]
之类的东西,将不会工作。你能告诉我们更多关于它真正归来的东西吗?是的,它被声明只返回object
,但它显然返回了更多的东西。如果您知道它将始终返回带有基于1的索引的object[,]
,您可以转换为:
object[,] t = (object[,]) wsf.LinEst(y.ToArray(), x.ToArray(), false, true);
double first = (double) t[1, 1];
如果您不知道数组的下限,您当然可以通过编程方式请求它们......但LINQ方式可能会更简单。
答案 1 :(得分:1)
您可以强制转换为适当的类型。
而不是:
object t = (object) wsf.linEst(etc.)
试
int[,] t = (int[,]) wsf.linEst(etc.)
这是因为linEst函数不是简单地返回Object类的实例。
您在问题中包含的输出似乎暗示调试器能够确定对象的运行时类型,因此请尝试使用该信息进行正确的转换。
或者wsf.linEst不只是返回一个对象而你正在添加(object)
文本,该文本强制返回值被转换为适合object t
变量