TryParse を正しく動作させるのに問題があります。(システム内の別のコンポーネントからのものであるため) 有効であるとほぼ確信している値のリストがありますが、適切なエラー処理が行われていることを確認したいと思います。
これが私の値のリストの例です:
20.00
20.00
-150.00
そして、ここに私が最初に書いた方法があります:
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;
}
変数 'successful' は -150.00 に対して false を返していたので、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;
}
しかし、そこに NumberStyles があるので、どの数字も解析されません! これはすべてシステム内にあるため、IFormatProvider を null に設定することに満足しています。私が間違っているかもしれないことを誰かが見ていますか?