2010-11-08 14 views
0

I peuvent avoir les types suivants:
Nombre avec décimales: 100,90
Nombre (int32): 32
chaîne: ""Cascading analyser

Ce que je veux est une fonction qui tente d'analyser une décimale et si cela échoue, alors essaye d'analyser comme un int et si cela échoue alors c'est une chaîne. Tout type de fonction en C# qui a les fonctionnalités suivantes est apprécié.

+1

Que renverrait finalement cette fonction? –

+0

une chaîne de devise formatée si sucessully analysé comme int ou décimal .Si pas alors seulement la chaîne – chugh97

Répondre

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

Cependant, cette méthode sera toujours un retour decimal lorsqu'il est passé quelque chose qui peut être analysé comme un int comme int s peuvent toujours être analysés comme decimal. Vous voudrez peut-être commander de nouveau le TryParse pour placer le int en premier.

1

TryParse() est votre ami, mais je ne comprends pas ce que vous voulez car tous les entiers valides sont également des nombres décimaux valides.