Мысли о foreach с Enumerable.Range против традиционного цикла for

Это просто для развлечения. (Я csharp бы просто использовал стандартный c#.net формат цикла «for (int i = 1; i <= 10; i++)».)

foreach (int i in 1.To(10))
{
    Console.WriteLine(i);    // 1,2,3,4,5,6,7,8,9,10
}

// ...

public static IEnumerable To(this int from, int to)
{
    if (from < to)
    {
        while (from <= to)
        {
            yield return from++;
        }
    }
    else
    {
        while (from >= to)
        {
            yield return from--;
        }
    }
}

Вы также dot-net можете добавить метод расширения csharp Step:

foreach (int i in 5.To(-9).Step(2))
{
    Console.WriteLine(i);    // 5,3,1,-1,-3,-5,-7,-9
}

// ...

public static IEnumerable Step(this IEnumerable source, int step)
{
    if (step == 0)
    {
        throw new ArgumentOutOfRangeException("step", "Param cannot be zero.");
    }

    return source.Where((x, i) => (i % step) == 0);
}

c#

.net

c#-3.0

for-loop

2022-10-14T09:28:37+00:00
Вопросы с похожей тематикой, как у вопроса:

Мысли о foreach с Enumerable.Range против традиционного цикла for