2010-04-24 81 views
2

如何访问从如何从一个对象访问C#中的第一值3.0

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,2 1]的值,即0.17134831460674155

如何得到。

linEst只返回一个对象。

我使用C#3.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的方式可能会更简单。

+0

非常感谢SIR。这真的很有帮助。最近我购买了你的书“C#深度”。虽然我还没有完成整本书的阅读......但是到目前为止我读过的东西对我来说都是一种有价值的资产。再一次感谢你。 – Newbie 2010-04-24 08:22:43

1

可以强制转换为相应的类型。

而不是做的:

object t = (object) wsf.linEst(etc.) 

尝试

int[,] t = (int[,]) wsf.linEst(etc.) 

这是因为LINEST函数不是简单地返回Object类的一个实例。

您在问题中包含的输出似乎意味着调试器能够确定对象的运行时类型t因此请尝试使用该信息进行适当的转换。

要么,wsf.linEst不只是返回一个对象,你还说这是迫使返回值(object)文本强制转换为融入object t变量

相关问题