📖 Scenario: You are helping a small bookstore organize its inventory. The store has a list of book titles, and you want to display each title to the customers.
🎯 Goal: Build a simple C# program that uses a foreach loop to go through a list of book titles and print each one.
📋 What You'll Learn
Create a list of book titles with exact values
Create a variable to count the number of books
Use a foreach loop to iterate over the list of book titles
Print each book title and the total count of books
💡 Why This Matters
🌍 Real World
Foreach loops are used in many programs to process lists of data, like showing items in a store or reading user inputs.
💼 Career
Understanding how to loop over collections is a basic skill for software developers, useful in data processing, UI lists, and more.
Progress0 / 4 steps
1
Create a list of book titles
Create a List<string> called books with these exact titles: "The Hobbit", "1984", "Pride and Prejudice", "To Kill a Mockingbird".
C Sharp (C#)
Hint
Use List<string> and initialize it with the four book titles inside curly braces.
2
Create a counter variable
Create an integer variable called count and set it to 0 to keep track of the number of books.
C Sharp (C#)
Hint
Declare int count = 0; inside the Main method.
3
Use a foreach loop to iterate over the list
Use a foreach loop with the variable book to go through each item in the books list. Inside the loop, print the current book and increase count by 1.
C Sharp (C#)
Hint
Use foreach (string book in books) and inside the loop write Console.WriteLine(book); and count++;.
4
Print the total number of books
After the foreach loop, print the total number of books using Console.WriteLine with the message: Total books: followed by the count variable.
C Sharp (C#)
Hint
Use Console.WriteLine($"Total books: {count}"); after the loop to show the total.
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
Step 1: Understand the purpose of foreach
The foreach loop is designed to go through each element in a collection without manual index handling.
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.
Final Answer:
It visits each item in a collection one by one. -> Option A
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
Step 1: Recall correct foreach syntax
The correct syntax uses parentheses with type and variable, then 'in' keyword before collection.
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.
Final Answer:
foreach (string name in names) { Console.WriteLine(name); } -> Option B
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
Step 1: Understand the loop behavior
The foreach loop prints each fruit followed by a space, all on the same line.
Step 2: Analyze output format
Since Console.Write (not WriteLine) is used, output is continuous with spaces between fruits.
Final Answer:
apple banana cherry -> Option A
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
Step 1: Understand foreach restrictions
Modifying a collection (like removing items) while using foreach causes runtime errors.
Step 2: Check other options
Semicolon is not needed after foreach header. Variable 'num' is declared. List initialization is correct.
Final Answer:
Cannot modify collection while iterating with foreach. -> Option C
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
Step 1: Understand dictionary iteration
Iterating a dictionary with foreach gives key-value pairs as 'var pair'.
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.
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.
Final Answer:
foreach (var pair in scores) { if (pair.Value > 50) Console.WriteLine(pair.Key); } -> Option D
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 unknownstrongwhile earning +1 Grip toward your certificate.