级联解析

时间:2010-11-08 08:48:48

标签: c# .net parsing tryparse

我可能有以下类型:
带小数的数字:100.90
数字(int32):32
字符串:“”

我想要的是一个尝试解析为十进制的函数,如果失败,则尝试解析为int,如果失败,那么它是一个字符串。 C#中具有以下功能的任何类型的功能都是值得赞赏的。

2 个答案:

答案 0 :(得分:2)

public static object cascadeParse(string obj)
{
    decimal decRet;
    if (!decimal.TryParse(obj, out decRet))
    {
        int intRet;
        if (!int.TryParse(obj,  out intRet))
        {
            return obj;
        }
        else
        {
            return intRet;
        }
    }
    else
    {
        return decRet;
    }
}

但是,当传递可以解析为decimal的内容时,此方法将始终返回int,因为int始终可以解析为decimal。您可能需要重新排序TryParse以将int放在首位。

答案 1 :(得分:1)

TryParse()是你的朋友,但是我不明白你想要什么,因为所有有效的整数都是有效的小数。