【问题标题】:Convert foreach to variable assign when returning a Tuple返回元组时将 foreach 转换为变量分配
【发布时间】:2020-01-13 16:42:15
【问题描述】:

使用 .NET Framework 4.7.2,我有一个返回元组的函数,然后将返回的值传递给 foreach 循环中的另一个函数:

foreach ((var price, var discount) in Calculator.Compute(period, calculationComponent))
 {
  var rows = CreateCalculationRows(price, discount, otherParameters);
 }

Compute 函数声明如下:

public static IEnumerable<(Price price, DiscountInfo discount)> Compute(Price price, CalcComponent calcComponent) { 
  ...
}

代码运行良好,但我想删除 foreach 循环,因为 Calculator.Compute() 函数在某些特定条件下(在这种特定情况下始终为真)返回单行。我无法简化 Compute() 返回对象,因为它用于许多其他函数。

如何更改代码以移除 foreach,以便 CreateCalculationRows() 正确接收参数?

【问题讨论】:

  • (注意,可以写var (price, discount) ...,略短一些)
  • 您可以使用 FirstFirstOrDefault 或其他东西,但我认为为 Compute 创建一个只返回单个元组而不是 IEnumerable 的新方法会更好代码自描述。

标签: c# .net tuples return-value


【解决方案1】:

我希望这样的事情能够奏效 - 只需获取一个结果并解构它:

(var price, var discount) = Calculator.Compute(period, calculationComponent).Single();
var rows = CreateCalculationRows(price, discount, otherParameters);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多