Как получить доступ к первому значению из объекта в C # 3.0 - PullRequest
2 голосов
/ 24 апреля 2010

Как получить доступ к первому значению с

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

Спасибо

Спасибо

Ответы [ 2 ]

2 голосов
/ 24 апреля 2010

Что ж, похоже, что вы можете перечислить что-то, что возвращает удвоение - хотя на самом деле это может не реализовывать IEnumerable<double>. Попробуйте это (с директивой using System.Linq; вверху вашего кода):

IEnumerable t = (IEnumerable) wsf.LinEst(y.ToArray(), x.ToArray(), false, true);
double first = t.Cast<double>().First();

Однако, не будет работать, если на самом деле он возвращает что-то вроде int[][]. Не могли бы вы рассказать нам больше о том, что он действительно возвращает? Да, объявлено просто возвращение object, но оно явно возвращает нечто большее. Если вы знаете, что он всегда будет возвращать object[,] с индексами на основе 1, вы можете привести к этому:

object[,] t = (object[,]) wsf.LinEst(y.ToArray(), x.ToArray(), false, true);
double first = (double) t[1, 1];

Если вы не знаете нижние границы массива, вы можете запросить их программно, конечно ... но способ LINQ, вероятно, будет проще.

1 голос
/ 24 апреля 2010

Вы можете принудительно применить приведение к соответствующему типу.

Вместо того, чтобы делать:

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

попробовать

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

Это потому, что функция linEst не просто возвращает экземпляр класса Object.

Вывод, который вы включили в свой вопрос, похоже, подразумевает, что отладчик может определить тип времени выполнения вашего объекта t, поэтому попробуйте использовать эту информацию для правильного приведения.

Либо так, либо wsf.linEst не просто возвращает объект, и вы добавляете тот текст (object), который заставляет возвращаемое значение быть приведенным к переменной object t

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...