Sto riscontrando un problema nel far funzionare correttamente TryParse. Ho una lista di valori che sono quasi certo siano validi (dato che provengono da un altro componente del nostro sistema) ma vorrei assicurarmi che ci sia una corretta gestione degli errori.TryParse fallito con numeri negativi
Ecco un elenco esempio di miei valori:
20,00
20,00
-150,00
e qui è il metodo che ho originariamente scritto:
private decimal CalculateValue(IEnumerable<XElement> summaryValues)
{
decimal totalValue = 0;
foreach (XElement xElement in summaryValues)
{
decimal successful;
Decimal.TryParse(xElement.Value, out successful);
if (successful > 0)
totalValue += Decimal.Parse(xElement.Value);
}
return totalValue;
}
La variabile 'successo' restituiva false per -150,00, quindi ho aggiunto NumberStyles:
private decimal CalculateValue(IEnumerable<XElement> summaryValues)
{
decimal totalValue = 0;
foreach (XElement xElement in summaryValues)
{
decimal successful;
Decimal.TryParse(xElement.Value, NumberStyles.AllowLeadingSign, null, out successful);
if (successful > 0)
totalValue += Decimal.Parse(xElement.Value, NumberStyles.AllowLeadingSign);
}
return totalValue;
}
Tuttavia, ora che ho NumberStyles, nessun numero verrà analizzato! Sono contento di avere IFormatProvider impostato su null poiché questo è tutto nel nostro sistema. Qualcuno vede cosa potrei fare male?
Perché sei l'analisi di due volte? – SLaks