2010-11-08 4 views
0

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

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

+1

Какова будет эта функция в конечном итоге? –

+0

отформатированная строка валюты, если она полностью проанализирована как int или десятичная. Если не просто строка – chugh97

ответ

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

1

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

Смежные вопросы