Is there an elegant way to repeat an action?

后端 未结 9 1310
野的像风
野的像风 2020-12-16 08:56

In C#, using .NET Framework 4, is there an elegant way to repeat the same action a determined number of times? For example, instead of:

int repeat = 10;
for          


        
9条回答
  •  时光取名叫无心
    2020-12-16 09:57

    Like this?

    using System.Linq;
    
    Enumerable.Range(0, 10).ForEach(arg => toRepeat());
    

    This will execute your method 10 times.

    [Edit]

    I am so used to having ForEach extension method on Enumerable, that I forgot it is not part of FCL.

    public static void ForEach(this IEnumerable source, Action action)
    {
        foreach (var item in source)
            action(item);
    }
    

    Here is what you can do without ForEach extension method:

    Enumerable.Range(0, 10).ToList().ForEach(arg => toRepeat());
    

    [Edit]

    I think that the most elegant solution is to implement reusable method:

    public static void RepeatAction(int repeatCount, Action action)
    {
        for (int i = 0; i < repeatCount; i++)
            action();
    }
    

    Usage:

    RepeatAction(10, () => { Console.WriteLine("Hello World."); });
    

提交回复
热议问题