如何尝试转换对象为双精度,如果它失败,把它作为字符串

本文关键字:失败 字符串 何尝试 如果 转换 双精度 对象 | 更新日期: 2023-09-27 18:16:43

我想将对象(保存字符串)转换为双精度,如果它失败(它包含一个不能转换为双精度的字符串)将其转换为字符串,这样我就会有一个双精度和字符串的List<object>

我有这样的东西:(thisNavigator是XPathNavigator)

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

如何尝试转换对象为双精度,如果它失败,把它作为字符串

可能是这样的?

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);
    }
}

您可以使用double.TryParse():

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

但是更好的是,你可以使用thisNavigator.TypedValue,它应该返回值类型为适当的类型(但装箱为对象)-然后你可以直接插入到你的列表。我不得不质疑这个设计——你为什么要把List<object>放在身边?一定有更好的办法