我在让 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 感觉很好,因为这一切都在我们的系统中。有谁看到我可能做错了什么?