C# for loop

for classique


    for (int i = 0; i < 5; i++)
    {
        Console.WriteLine($"i = {i}");
    }
    

for avec décrémentation


    for (int i = 5; i >= 0; i--)
    {
        Console.WriteLine($"i = {i}");
    }
    

for avec pas personnalisé (i += 2)


    for (int i = 0; i <= 10; i += 2)
    {
        Console.WriteLine($"i = {i}");
    }
    

for sans initialisation


    int k = 0;
    for (; k < 3; k++)
    {
        Console.WriteLine($"k = {k}");
    }
    

for sans condition (contrôlé par break)


    for (int i = 0; ; i++)
    {
        if (i > 3) break;
        Console.WriteLine($"i = {i}");
    }
    

for sans incrémentation


    for (int i = 0; i < 3;)
    {
        Console.WriteLine($"i = {i}");
        i++; // incrémentation manuelle
    }
    

for avec plusieurs variables


    for (int i = 0, j = 6; i < j; i++, j--)
    {
        Console.WriteLine($"i = {i}, j = {j}");
    }
    

for avec condition complexe


    // La condition dépend à la fois d'un indice et d'une expression booléenne
    // (ici simulée par une variable)
    bool conditionExterne = true;
    for (int i = 0; i < 3 && conditionExterne; i++)
    {
        Console.WriteLine($"i = {i} (conditionExterne={conditionExterne})");
        if (i == 1) conditionExterne = false;
    }
    

for imbriqués (nested)

    
    for (int i = 0; i < 3; i++)
    {
        for (int j = 0; j < 2; j++)
        {
            Console.WriteLine($"(i, j) = ({i}, {j})");
        }
    }
    

for avec continue / break


    for (int i = 0; i < 10; i++)
    {
        if (i == 2) continue; // saute l'itération 2
        if (i == 5) break;    // s'arrête à 5
        Console.WriteLine($"i = {i}");
    }
    

for avec goto (rare, déconseillé)


    for (int i = 0; i < 5; i++)
    {
        if (i == 3) goto EndLoop;
        Console.WriteLine($"i = {i}");
    }
EndLoop:
    Console.WriteLine("Boucle terminée via goto");
    

for avec async/await (dans Main async)


    for (int i = 0; i < 3; i++)
    {
        await Task.Delay(200);
        Console.WriteLine($"Async i = {i}");
    }
    

for-like avec LINQ (simulation)

            
    // Ce n'est pas un 'for' mais illustre un parcours style fonctionnel
    Enumerable.Range(0, 5).ToList().ForEach(i => Console.WriteLine($"i = {i}"));

    Console.WriteLine("\n===== 14) for avec Span<T> =====");
    Span<int> numbers = stackalloc int[] { 1, 2, 3, 4, 5 };
    for (int i = 0; i < numbers.Length; i++)
    {
        Console.WriteLine(numbers[i]);
    }
    

for avec unsafe & pointeurs


    UnsafePointerDemo();

    private static unsafe void UnsafePointerDemo()
    {
        int[] arr = { 1, 2, 3 };
        fixed (int* p = arr)
        {
            for (int i = 0; i < arr.Length; i++)
            {
                Console.WriteLine($"*(p + {i}) = {*(p + i)}");
            }
        }
    }

    

for avec variables externes modifiées


    int somme = 0;
    for (int i = 0; i <= 5; i++)
    {
        somme += i; // accumulation
    }
    Console.WriteLine($"Somme 0..5 = {somme}");
    

for sur tableau / indexation


    int[] arr = { 10, 20, 30, 40 };
    for (int i = 0; i < arr.Length; i++)
    {
        Console.WriteLine($"arr[{i}] = {arr[i]}");
    }
    

for avec vérifications et continue


    for (int i = 0; i < 6; i++)
    {
        if (i % 2 == 1) continue; // garde uniquement pairs
        Console.WriteLine($"pair: {i}");
    }
    

for avec plusieurs expressions dans les sections


    // On peut mettre des expressions multiples séparées par des virgules dans init et incrément
    for (int i = 0, j = 0; i < 3; i++, j += 2)
    {
        Console.WriteLine($"i = {i}, j = {j}");
    }
    

for infini contrôlé en interne


    int compteur = 0;
    for (;;)
    {
        if (compteur++ >= 3) break;
        Console.WriteLine($"compteur = {compteur}");
    }