如何尝试将对象转换为double,如果失败则将其作为字符串?

时间:2011-12-04 21:41:20

标签: c# string

我想将对象(包含一个字符串)转换为double,如果失败(它包含一个不能转换为double的字符串)将其转换为字符串,那么我将有一个List<object>双打和弦乐。

我有这样的事情: (thisNavigator是XPathNavigator)

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

2 个答案:

答案 0 :(得分:4)

这样的事可能吗?

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 :(得分:1)

您可以使用double.TryParse()

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

但更好的是你可以使用thisNavigator.TypedValue,它应该返回键入的值作为适当的类型(但是作为对象加框) - 然后你可以将它直接插入你的列表中。我不得不质疑设计 - 你为什么要保持List<object>?必须有更好的方法。