Каскадный анализ - PullRequest
       19

Каскадный анализ

0 голосов
/ 08 ноября 2010

У меня могут быть следующие типы:
Число с десятичной дробью: 100,90
Номер (int32): 32
Строка: ""

То, что я хочу, - это функция, которая пытается разобрать как десятичное число, и если она терпит неудачу, то пытается проанализировать как целое число, и если это не удается, то это строка. Любая функция в C #, которая имеет следующую функциональность, приветствуется.

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010
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 s всегда может быть проанализировано как decimal. Возможно, вы захотите изменить порядок TryParse s, чтобы поставить int один первым.

1 голос
/ 08 ноября 2010

TryParse () - ваш друг, однако я не понимаю, чего вы хотите, поскольку все действительные числа также являются действительными десятичными числами.

...