【问题标题】:.NET 4.0 refactoring for yield return.NET 4.0 重构收益回报
【发布时间】:2012-11-01 07:53:56
【问题描述】:

如何在 .NET 4.0 中重构收益回报

public static void DoIt()
{
    foreach (int n in Power(2,4))
    {
        Console.Write(n);
    }
}


public static IEnumerable CalcPower(int base, int exponent)
{
    int res = 1;

    for (int c = 1; c <= high; counter++)
    {
        res = res * base;
        yield return result;
    }
}

【问题讨论】:

  • 什么意思?你的代码有什么问题?它编译吗?它给出正确的结果吗?是否要删除 yield return 并用其他内容替换它?
  • 我会将public static IEnumerable Power 更改为public static IEnumerable&lt;int&gt; Power
  • 你究竟为什么要使用Tasks?

标签: c#


【解决方案1】:

你的方法很好。这可能也是我实施它的方式。一项更改是您应该使用通用的IEnumerable&lt;int&gt; 而不是IEnumerable

public static IEnumerable<int> Power(int baseNumber, int highExponent)

如果你真的想换一种方式,可以使用LINQ,但在我看来,并没有原代码那么清晰:

public static IEnumerable<int> Power(int baseNumber, int highExponent)
{
    return Enumerable.Range(1, highExponent)
        .Select(e => (int)Math.Pow(baseNumber, e));
}

yield 关键字尚未过时。如果yield 的代码更清晰,请使用它。

【讨论】:

    猜你喜欢
    • 2011-05-27
    • 2012-01-14
    • 1970-01-01
    • 2018-01-23
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 2011-01-13
    相关资源
    最近更新 更多