C# .NET 4.0针对收益率的重构

C# .NET 4.0针对收益率的重构,c#,C#,如何在.NET4.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++)

如何在.NET4.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;
    }
}
publicstaticvoiddoit()
{
foreach(整数n的幂(2,4))
{
控制台写入(n);
}
}
公共静态IEnumerable CalcPower(整数基,整数指数)
{
int res=1;

对于(int c=1;c您的方法很好。这可能也是我实现它的方式。一个变化是您应该使用泛型
IEnumerable
而不是
IEnumerable

public static IEnumerable<int> Power(int baseNumber, int highExponent)
公共静态IEnumerable幂(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));
}
公共静态IEnumerable幂(int baseNumber,int highExponent)
{
返回可枚举的范围(1,高指数)
.Select(e=>(int)Math.Pow(baseNumber,e));
}

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

你的意思是什么?你的代码有什么问题?它编译了吗?它给出了正确的结果吗?你想删除
yield return
并用其他东西替换它吗?我想更改
公共静态IE可数幂
公共静态IEnumerable幂
为什么要使用任务?