# Do-While Loop

Run a block of code at least once, then repeat it while a condition is true, with C#'s do-while loop.

Apprentice · C# · Updated November 3, 2026

## After this lesson you can

- Run code at least once, then repeat it, with a do-while loop

## Key takeaways

- A `do-while` loop runs its block first and checks the condition after, so the block always runs at least once.
- The condition comes at the end, followed by a semicolon: `while (roll > 4);`.
- Use `do-while` when something must happen once before you can ask "again?", such as showing a menu.

A `do-while` loop is a `while` loop turned upside down. It runs its block **first**, and checks the condition **after**. So its block always runs at least once.

## The shape

```csharp
int roll = 6;

do
{
    Console.WriteLine("You rolled a " + roll);
    roll--;
}
while (roll > 4);
```

```text
You rolled a 6
You rolled a 5
```

The condition comes at the end, after `while`, and is followed by a semicolon.

## At least once

Compare the two loops when the condition is false from the start:

```csharp
int ticketsLeft = 0;

while (ticketsLeft > 0)
{
    Console.WriteLine("while: selling a ticket");
    ticketsLeft--;
}

do
{
    Console.WriteLine("do-while: selling a ticket");
    ticketsLeft--;
}
while (ticketsLeft > 0);
```

```text
do-while: selling a ticket
```

The `while` loop checks first and never runs. The `do-while` runs once before it checks.

## A menu that shows at least once

`do-while` fits whenever something must happen once before you can decide whether to repeat it. A menu is the classic case: you have to show it before the user can choose to quit.

```csharp
string? choice;

do
{
    Console.WriteLine("1) Show scores");
    Console.WriteLine("2) Add a score");
    Console.WriteLine("Q) Quit");
    Console.Write("Choose: ");
    choice = Console.ReadLine();

    if (choice == "1")
    {
        Console.WriteLine("Showing scores...");
    }
    else if (choice == "2")
    {
        Console.WriteLine("Adding a score...");
    }
}
while (choice != "Q" && choice != "q" && choice != null);

Console.WriteLine("Goodbye.");
```

The menu always shows once; it repeats until the user types `Q`. (The `choice != null` part stops the loop if there's no more input at all.)

## Check yourself

2 questions to try on the lesson page.

## So what

Choose `do-while` when the block has to run before the question "again?" makes sense: menus, games, and asking for input until it's valid.

## Key terms

- [do-while Loop](https://www.ask-codey.com/glossary/do-while-loop-c-sharp)

## Cheat sheets

- [Do-While Loop](https://www.ask-codey.com/cheat-sheets/looping-in-csharp-do-while-loop-cheat-sheet)

Source: https://www.ask-codey.com/lessons/looping-in-csharp-do-while-loop
