2010-04-24 80 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變量

相關問題