Bird
Raised Fist0
C Sharp (C#)programming~10 mins

Foreach loop over collections in C Sharp (C#) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Foreach loop over collections
Start with collection
↓
Pick first item
↓
Execute loop body with item
↓
More items?
No→Exit loop
Yes↓
Pick next item
The foreach loop picks each item from a collection one by one and runs the loop body using that item until all items are processed.
Execution Sample
C Sharp (C#)
string[] fruits = {"apple", "banana", "cherry"};
foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
This code prints each fruit name from the fruits array, one per line.
Execution Table
IterationCurrent item (fruit)ActionOutput
1"apple"Print fruitapple
2"banana"Print fruitbanana
3"cherry"Print fruitcherry
--No more items, exit loop-
💡 All items in the collection have been processed, so the loop ends.
Variable Tracker
VariableStartAfter 1After 2After 3Final
fruitnull"apple""banana""cherry"null (loop ended)
Key Moments - 3 Insights
Why does the variable 'fruit' change each iteration?
Because foreach assigns the next item from the collection to 'fruit' each time, as shown in execution_table rows 1 to 3.
What happens when all items are done?
The loop stops automatically, as shown in the last row of execution_table where no more items remain.
Can we modify the collection inside the foreach loop?
No, modifying the collection during foreach can cause errors or unexpected behavior. The loop expects the collection to stay the same.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'fruit' during iteration 2?
A"cherry"
B"apple"
C"banana"
Dnull
💡 Hint
Check the 'Current item (fruit)' column at iteration 2 in the execution_table.
At which iteration does the foreach loop stop?
AAfter iteration 1
BAfter iteration 3
CAfter iteration 2
DIt never stops
💡 Hint
Look at the exit_note and the last row in execution_table showing no more items.
If we add "date" to the fruits array, how many iterations will the loop have?
A4
B3
C5
DCannot tell
💡 Hint
The loop runs once per item in the collection, so adding one item increases iterations by one.
Concept Snapshot
foreach (type var in collection) {
  // use var inside loop
}

- Loops over each item in collection
- 'var' holds current item
- Stops after last item
- Collection should not change during loop
Full Transcript
The foreach loop in C# goes through each item in a collection one by one. It assigns the current item to a variable and runs the loop body using that item. When all items are done, the loop stops automatically. You cannot change the collection while looping. This example prints each fruit name from an array. The variable 'fruit' changes each iteration to the next fruit. The loop ends after the last fruit is printed.

Practice

(1/5)
1. What does a foreach loop do in C#?
easy
A. It visits each item in a collection one by one.
B. It creates a new collection from scratch.
C. It only runs once regardless of collection size.
D. It deletes items from a collection while looping.

Solution

  1. Step 1: Understand the purpose of foreach

    The foreach loop is designed to go through each element in a collection without manual index handling.
  2. Step 2: Compare options to foreach behavior

    Only It visits each item in a collection one by one. correctly describes visiting each item one by one. Other options describe actions foreach does not perform.
  3. Final Answer:

    It visits each item in a collection one by one. -> Option A
  4. Quick Check:

    foreach loops = visit items one by one [OK]
Hint: Foreach always processes every item in the collection [OK]
Common Mistakes:
  • Thinking foreach modifies the collection
  • Confusing foreach with creating collections
  • Assuming foreach runs only once
2. Which of the following is the correct syntax for a foreach loop over a list of strings named names?
easy
A. foreach (name string in names) { Console.WriteLine(name); }
B. foreach (string name in names) { Console.WriteLine(name); }
C. foreach string name in names { Console.WriteLine(name); }
D. foreach (string name : names) { Console.WriteLine(name); }

Solution

  1. Step 1: Recall correct foreach syntax

    The correct syntax uses parentheses with type and variable, then 'in' keyword before collection.
  2. Step 2: Check each option

    foreach (string name in names) { Console.WriteLine(name); } matches correct syntax. foreach string name in names { Console.WriteLine(name); } misses parentheses. foreach (name string in names) { Console.WriteLine(name); } swaps type and variable. foreach (string name : names) { Console.WriteLine(name); } uses ':' which is invalid in C# foreach.
  3. Final Answer:

    foreach (string name in names) { Console.WriteLine(name); } -> Option B
  4. Quick Check:

    foreach syntax = (type variable in collection) [OK]
Hint: Remember: foreach uses (type variable in collection) [OK]
Common Mistakes:
  • Omitting parentheses
  • Using ':' instead of 'in'
  • Swapping variable and type order
3. What will be the output of this code?
string[] fruits = { "apple", "banana", "cherry" };
foreach (string fruit in fruits)
{
    Console.Write(fruit + " ");
}
medium
A. apple banana cherry
B. applebanana cherry
C. apple, banana, cherry
D. apple banana cherry

Solution

  1. Step 1: Understand the loop behavior

    The foreach loop prints each fruit followed by a space, all on the same line.
  2. Step 2: Analyze output format

    Since Console.Write (not WriteLine) is used, output is continuous with spaces between fruits.
  3. Final Answer:

    apple banana cherry -> Option A
  4. Quick Check:

    foreach prints items with space = apple banana cherry [OK]
Hint: Console.Write prints inline; spaces separate items [OK]
Common Mistakes:
  • Assuming Console.WriteLine adds spaces
  • Expecting commas between items
  • Thinking output is on separate lines
4. Identify the error in this code snippet:
List<int> numbers = new List<int> {1, 2, 3};
foreach (int num in numbers)
{
    numbers.Remove(num);
}
medium
A. Variable 'num' is not declared.
B. Missing semicolon after foreach statement.
C. Cannot modify collection while iterating with foreach.
D. List initialization syntax is incorrect.

Solution

  1. Step 1: Understand foreach restrictions

    Modifying a collection (like removing items) while using foreach causes runtime errors.
  2. Step 2: Check other options

    Semicolon is not needed after foreach header. Variable 'num' is declared. List initialization is correct.
  3. Final Answer:

    Cannot modify collection while iterating with foreach. -> Option C
  4. Quick Check:

    Modifying collection in foreach = error [OK]
Hint: Don't change collection inside foreach loop [OK]
Common Mistakes:
  • Trying to remove items inside foreach
  • Confusing foreach syntax errors
  • Ignoring runtime exceptions
5. Given a dictionary Dictionary<string, int> scores, how can you use a foreach loop to print all keys with values greater than 50?
hard
A. foreach (var pair in scores) { Console.WriteLine(pair.Value > 50); }
B. foreach (string key in scores.Values) { if (key > 50) Console.WriteLine(key); }
C. foreach (int value in scores.Keys) { if (value > 50) Console.WriteLine(value); }
D. foreach (var pair in scores) { if (pair.Value > 50) Console.WriteLine(pair.Key); }

Solution

  1. Step 1: Understand dictionary iteration

    Iterating a dictionary with foreach gives key-value pairs as 'var pair'.
  2. Step 2: Filter and print keys with values > 50

    Check pair.Value > 50, then print pair.Key. foreach (var pair in scores) { if (pair.Value > 50) Console.WriteLine(pair.Key); } does this correctly.
  3. Step 3: Analyze incorrect options

    foreach (string key in scores.Values) { if (key > 50) Console.WriteLine(key); } tries to iterate values as strings (wrong). foreach (int value in scores.Keys) { if (value > 50) Console.WriteLine(value); } iterates keys as ints (wrong). foreach (var pair in scores) { Console.WriteLine(pair.Value > 50); } prints booleans, not keys.
  4. Final Answer:

    foreach (var pair in scores) { if (pair.Value > 50) Console.WriteLine(pair.Key); } -> Option D
  5. Quick Check:

    Use var pair and check Value > 50 [OK]
Hint: Use var pair to access key and value in dictionary [OK]
Common Mistakes:
  • Iterating keys as values or vice versa
  • Printing booleans instead of keys
  • Wrong variable types in foreach
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard