Oto fragment kodu, który drukuje kwadraty liczb od 0 do 9:Czy istnieje metoda "upto" w języku C#?
for (int i = 0; i < 10; i++)
Console.WriteLine(i*i);
Uprawiając od 0 do n o 1 przez for
pętli jest bardzo częstym idiom.
Oto metoda UpTo
które wyraża w ten sposób:
class MathUtil
{
public static void UpTo(int n, Action<int> proc)
{
for (int i = 0; i < n; i++)
proc(i);
}
}
Powyższy przykład kwadraty jest teraz:
MathUtil.UpTo(10, (i) => Console.WriteLine(i * i));
Moje pytanie brzmi, czy średnia # biblioteka C pochodzić z czymś powyższym UpTo
?
Idealnie chciałbym, aby metoda "UpTo" była metodą dla wszystkich obiektów całkowitych. Więc mógłbym zrobić:
var n = 10;
n.UpTo(...);
Czy to możliwe w języku C#?
Może to być kwestia gustu, ale uważam wariant "za" za nieco bardziej czytelny niż "UpTo". Ponadto bardzo łatwo jest zmodyfikować numer początkowy ('0') lub metodę inkrementacji (' i ++ ') w wariancie' for'. Sądzę, że mają tu również zastosowanie komentarze Eric Lipperta dotyczące metody "ForEach'" (http://blogs.msdn.com/b/ericlippert/archive/2009/05/18/foreach-vs-foreach.aspx). – Heinzi
@Heinzi Dzięki za link do artykułu Erica! – dharmatech
Metody rozszerzeń .NET (http://dnpextensions.codeplex.com/) mają metodę rozszerzenia. '5times (...);' – Jalal