Как попытаться преобразовать объект в удвоение, и если он потерпит неудачу, принять его как строку - PullRequest
1 голос
/ 05 декабря 2011

Я хотел бы преобразовать объект (который содержит строку) в удвоение и, если он потерпит неудачу (содержит строку, которую нельзя преобразовать в удвоение), преобразовать его в строку, чтобы у меня было List<object> с двойными числамии строки.

У меня есть что-то вроде этого: (thisNavigator является XPathNavigator)

object paramValue;
paramValue = Convert.ToDouble(thisNavigator.ValueAsDouble);

Ответы [ 2 ]

4 голосов
/ 05 декабря 2011

Что-то вроде этого может быть?

static void Add(List<object> list, XPathNavigator thisNavigator)
{
    string s = thisNavigator.ValueAsString;
    double d;
    if(double.TryParse(s, out d))
    {
        list.Add(d);
    }
    else
    {
        list.Add(s);
    }
}
1 голос
/ 05 декабря 2011

Вы можете использовать double.TryParse():

object paramValue = ...;
double doubleValue;
if(!double.TryParse(thisNavigator.Value, out doubleValue))
{
    paramValue = thisNavigator.Value;
}

Но, что еще лучше, вы можете использовать thisNavigator.TypedValue, который должен возвращать значение, введенное в виде соответствующего типа (но в виде объекта), - тогда вы можете вставить его непосредственно в свой список. Я должен подвергнуть сомнению дизайн - почему вы держите List<object> вокруг? Должен быть лучший способ.

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