🔥 Zapisy zamknięte, ale możesz pobrać Roadmapę .NET i dołączyć do listy oczekujących — Pobierz i dołącz do Listy VIP →

Pętla do-while w C# — różnica względem while

Pętla do…while to bliska krewna pętli while z jedną kluczową różnicą: najpierw wykonuje ciało, a dopiero potem sprawdza warunek.

Czym różni się od while?

Kluczowa cecha: w do…while ciało pętli wykonuje się zawsze co najmniej raz, ponieważ warunek sprawdzany jest na końcu iteracji. W pętli while warunek sprawdzany jest na początku, więc ciało może nie wykonać się ani razu.

Dzięki temu do…while jest idealny tam, gdzie kod musi wykonać się przynajmniej jeden raz — na przykład przy wyświetlaniu menu albo prośbie o dane, którą powtarzamy do momentu poprawnego wprowadzenia.

Składnia

do
{
    // blok kodu — wykona się przynajmniej raz
}
while (warunek);   // pamiętaj o średniku na końcu
  • warunek – wyrażenie typu bool (wymagane); pętla powtarza się, dopóki jest true.

Ten średnik po while (warunek) to jedna z najczęstszych literówek u początkujących — w przeciwieństwie do pętli for i while, gdzie po nawiasie z warunkiem nie stawiamy średnika, tutaj jest on wymagany, bo cała konstrukcja do { } while (); jest jedną instrukcją.

Prosty przykład

int i = 0;
do
{
    Console.WriteLine(i);   // 0, 1, 2, 3, 4
    i++;
}
while (i < 5);

Praktyczny przykład — walidacja wejścia

Tu do…while pokazuje swoją przewagę: o liczbę pytamy co najmniej raz, a potem powtarzamy, dopóki użytkownik nie poda poprawnej wartości.

int liczba;
bool poprawna;

do
{
    Console.Write("Podaj liczbę dodatnią: ");
    string? wejscie = Console.ReadLine();

    poprawna = int.TryParse(wejscie, out liczba) && liczba > 0;

    if (!poprawna)
    {
        Console.WriteLine("To nie jest liczba dodatnia. Spróbuj ponownie.");
    }
}
while (!poprawna);

Console.WriteLine($"Dziękuję, podałeś: {liczba}");

Praktyczny przykład — menu konsolowe

Drugi klasyczny przypadek użycia: menu, które musi wyświetlić się przynajmniej raz, zanim cokolwiek wiadomo o wyborze użytkownika:

int wybor;

do
{
    Console.WriteLine("1. Nowa gra");
    Console.WriteLine("2. Wczytaj zapis");
    Console.WriteLine("3. Wyjście");
    Console.Write("Wybierz opcję: ");

    int.TryParse(Console.ReadLine(), out wybor);

    switch (wybor)
    {
        case 1: Console.WriteLine("Rozpoczynam nową grę..."); break;
        case 2: Console.WriteLine("Wczytuję zapis..."); break;
        case 3: Console.WriteLine("Do zobaczenia!"); break;
        default: Console.WriteLine("Nieznana opcja, spróbuj ponownie."); break;
    }
}
while (wybor != 3);

Gdybyś napisał to jako zwykłe while, musiałbyś sztucznie zainicjalizować wybor jakąś wartością przed pętlą tylko po to, by warunek na starcie był prawdziwy — do…while eliminuje ten narzut, bo warunek sprawdzany jest dopiero po pierwszym przebiegu.

Kiedy używać do…while?

Wybieraj do…while, gdy ciało pętli ma wykonać się przynajmniej raz, niezależnie od warunku — np. menu, walidacja danych wejściowych, ponawianie operacji. W pozostałych przypadkach zwykle wystarczy while lub for — w praktyce programiści C# sięgają po do…while rzadziej niż po pozostałe pętle, właśnie dlatego, że większość scenariuszy naturalnie pasuje do sprawdzania warunku na początku.

💡 W Visual Studio: wpisz do i naciśnij dwukrotnie Tab, aby wstawić szkielet pętli.

FAQ

Czy do…while może być nieskończone?
Tak, dokładnie tak samo jak while (true) — do { } while (true); nigdy się nie zakończy bez instrukcji break wewnątrz ciała.

Dlaczego kompilator wymaga średnika po while(warunek) w do…while, a w zwykłym while nie?
Bo w while (warunek) { } blok kodu w nawiasach klamrowych kończy instrukcję. W do { } while (warunek); to średnik po nawiasie z warunkiem kończy całą, jedną instrukcję do…while — inna konstrukcja składniowa, inna reguła.

👨‍💻
Mariusz Jurczenko
Senior .NET Developer · 10+ lat doświadczenia komercyjnego

Programista .NET z doświadczeniem komercyjnym w firmach takich jak NFZ, Kamsoft, Diagnostyka, Hermes Reply Polska czy Etisoft Smart Solutions. Twórca kursów, z których skorzystało już ponad 11 000 osób w Strefie Kursów i ponad 1 000 kursantów na dev-hobby.pl.

Specjalizacja: Clean Code, Clean Architecture i uczenie programowania tak, żeby dało się je naprawdę zrozumieć — nie wykuć.

🚀 Co dalej?

Zobacz to w praktyce na wideo i pobierz darmową roadmapę, żeby ułożyć naukę w spójną ścieżkę do pierwszej pracy.

2 comments

Dodaj komentarz

czytanie to początek

Zamień wiedzę w umiejętności

Pobierz darmową Roadmapę .NET i ułóż takie tematy jak ten w spójną ścieżkę do pierwszej pracy.

Pobieram roadmapę →