2012-11-01 47 views
0

如何產量回報進行重構,在.NET 4.0中.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; 
    } 
} 
+6

你是什麼意思?你的代碼有什麼問題?它是否編譯?它是否給出了正確的結果?你想刪除'yield return'並用其他東西替換它嗎? –

+2

我會將'public static IEnumerable Power'更改爲'Public static IEnumerable Power' – Rawling

+1

爲什麼你要使用Tasks? – Stilgar

回答

2

你的做法是好的。這可能也是我實施它的方式。一個變化是你應該使用通用IEnumerable<int>而不是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然後使用它。