gpt4 book ai didi

c# - TryParse 因负数而失败

转载 作者:太空狗 更新时间:2023-10-29 19:55:13 25 4
gpt4 key购买 nike

我在让 TryParse 为我正常工作时遇到问题。我有一个值列表,我几乎可以肯定这些值是有效的(因为它们来 self 们系统中的另一个组件),但我想确保有适当的错误处理。

这是我的值(value)观的示例列表:

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

最佳答案

这不是您应该使用 TryParse 的方式。

TryParse 返回一个 bool 值 (true/false),因此您上面的代码应该是:

private decimal CalculateValue(IEnumerable<XElement> summaryValues)
{
decimal totalValue = 0;

foreach (XElement xElement in summaryValues)
{
decimal valueReturned;
bool successful = Decimal.TryParse(xElement.Value, out valueReturned);
if (successful)
totalValue += valueReturned;
}
return totalValue;
}

或者更简洁地说,

private decimal CalculateValue(IEnumerable<XElement> summaryValues)
{
decimal totalValue = 0;

foreach (XElement xElement in summaryValues)
{
decimal valueReturned;
if (Decimal.TryParse(xElement.Value, out valueReturned))
totalValue += valueReturned;
}
return totalValue;
}

关于c# - TryParse 因负数而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4925215/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com