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

Array iteration with for and foreach in C Sharp (C#) - Step-by-Step Execution

Choose your learning style10 modes available
Concept Flow - Array iteration with for and foreach
Start
↓
Choose iteration type
↓
Initialize index i=0
↓
Check i < array.Length?
No→End
↓
Access array[i
↓
Process element
↓
Increment i
Back to Check↓
Start at first element
↓
Get current element
↓
Process element
↓
Move to next element
↓
More elements?
No→End
↩Back to Check
This flow shows how a for loop uses an index to access array elements step-by-step, while foreach directly accesses each element one by one until all are processed.
Execution Sample
C Sharp (C#)
string[] fruits = {"apple", "banana", "cherry"};
for (int i = 0; i < fruits.Length; i++)
{
    Console.WriteLine(fruits[i]);
}

foreach (string fruit in fruits)
{
    Console.WriteLine(fruit);
}
This code prints each fruit in the array twice: first using a for loop with an index, then using a foreach loop that directly accesses each element.
Execution Table
StepLoop TypeIndex or ElementConditionActionOutput
1fori=00 < 3 (true)Print fruits[0] = "apple"apple
2fori=11 < 3 (true)Print fruits[1] = "banana"banana
3fori=22 < 3 (true)Print fruits[2] = "cherry"cherry
4fori=33 < 3 (false)Exit for loop
5foreachfruit="apple"More elements? YesPrint fruitapple
6foreachfruit="banana"More elements? YesPrint fruitbanana
7foreachfruit="cherry"More elements? YesPrint fruitcherry
8foreachEndMore elements? NoExit foreach loop
💡 for loop ends when i reaches array length; foreach ends when no more elements
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4After Step 5After Step 6After Step 7Final
iundefined01233333
fruitundefinedundefinedundefinedundefinedundefined"apple""banana""cherry"undefined
Key Moments - 3 Insights
Why does the for loop use an index variable 'i' but foreach does not?
The for loop uses 'i' to access elements by position (see execution_table rows 1-4). Foreach automatically accesses each element directly without needing an index (rows 5-8).
What happens when the for loop index 'i' equals the array length?
When 'i' equals the array length (3), the condition 'i < fruits.Length' becomes false (row 4), so the loop stops to avoid accessing outside the array.
Can you modify the array elements inside foreach?
No, foreach provides a read-only copy of each element (like in rows 5-7). To modify elements, use a for loop with an index.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'i' at Step 3?
A2
B3
C1
D0
💡 Hint
Check the 'Index or Element' column for Step 3 in the execution_table.
At which step does the foreach loop stop iterating?
AStep 6
BStep 7
CStep 8
DStep 4
💡 Hint
Look for the step where 'More elements? No' appears in the Condition column for foreach.
If the array had 4 elements instead of 3, how many times would the for loop run?
A3 times
B4 times
C5 times
DDepends on the elements
💡 Hint
The for loop runs while i < array.Length; see how length controls iterations in execution_table rows 1-4.
Concept Snapshot
for loop: use index i from 0 to array.Length-1 to access elements
foreach loop: directly access each element without index
for allows modifying elements; foreach is read-only
both loop through all elements in order
for needs condition check; foreach ends when no more elements
Full Transcript
This visual execution shows how to loop through an array in C# using for and foreach. The for loop uses an index variable i starting at 0 and runs while i is less than the array length. Each iteration prints the element at fruits[i]. When i reaches the length, the loop stops to avoid errors. The foreach loop automatically accesses each element one by one, printing each fruit until no elements remain. Variables i and fruit change as the loops run. Key points include that for loops use an index and can modify elements, while foreach loops provide read-only access. The execution table tracks each step, showing conditions, actions, and outputs. This helps beginners see exactly how the loops work step-by-step.

Practice

(1/5)
1. Which loop is best when you want to access each element in an array without needing the index in C#?
easy
A. foreach loop
B. for loop
C. while loop
D. do-while loop

Solution

  1. Step 1: Understand loop purpose

    foreach is designed to iterate over each element directly without needing the index.
  2. Step 2: Compare with other loops

    for requires index management, while and do-while are less direct for arrays.
  3. Final Answer:

    foreach loop -> Option A
  4. Quick Check:

    Direct element access = foreach [OK]
Hint: Use foreach when index is not needed for array items [OK]
Common Mistakes:
  • Choosing for loop when index is not required
  • Confusing while loops with foreach
  • Thinking foreach can modify array size
2. Which of the following is the correct syntax for iterating over an array named numbers using a for loop in C#?
easy
A. for (int i = 0; i < numbers.Count; i++) { Console.WriteLine(numbers[i]); }
B. for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); }
C. for (int i = 0; i <= numbers.Length; i++) { Console.WriteLine(numbers[i]); }
D. for (int i = 1; i <= numbers.Length; i++) { Console.WriteLine(numbers[i]); }

Solution

  1. Step 1: Check loop start and end conditions

    Index starts at 0 and runs while less than numbers.Length (array length).
  2. Step 2: Validate index usage

    Accessing numbers[i] is correct; using Count is invalid for arrays.
  3. Final Answer:

    for (int i = 0; i < numbers.Length; i++) { Console.WriteLine(numbers[i]); } -> Option B
  4. Quick Check:

    Index 0 to Length-1 = correct for loop [OK]
Hint: Use i < array.Length, not <= or Count for arrays [OK]
Common Mistakes:
  • Using i <= numbers.Length causing out-of-range error
  • Starting index at 1 instead of 0
  • Using Count property on arrays
3. What will be the output of the following C# code?
int[] nums = {1, 2, 3};
int sum = 0;
foreach (int n in nums) {
  sum += n;
}
Console.WriteLine(sum);
medium
A. Error
B. 123
C. 0
D. 6

Solution

  1. Step 1: Understand foreach iteration

    The loop adds each element (1, 2, 3) to sum one by one.
  2. Step 2: Calculate sum

    sum = 0 + 1 + 2 + 3 = 6
  3. Final Answer:

    6 -> Option D
  4. Quick Check:

    Sum of array elements = 6 [OK]
Hint: Sum elements by adding each in foreach loop [OK]
Common Mistakes:
  • Concatenating numbers instead of adding
  • Forgetting to initialize sum to 0
  • Using for loop incorrectly causing index errors
4. Identify the error in this C# code snippet:
int[] arr = {10, 20, 30};
for (int i = 0; i <= arr.Length; i++) {
  Console.WriteLine(arr[i]);
}
medium
A. The loop condition should be i < arr.Length, not i <= arr.Length
B. The array declaration is incorrect
C. Console.WriteLine cannot print array elements
D. The loop variable i should start at 1

Solution

  1. Step 1: Check loop boundary

    Using i <= arr.Length causes index out of range because last valid index is Length - 1.
  2. Step 2: Correct loop condition

    Change condition to i < arr.Length to avoid runtime error.
  3. Final Answer:

    The loop condition should be i < arr.Length, not i <= arr.Length -> Option A
  4. Quick Check:

    Index must be less than Length [OK]
Hint: Use i < array.Length to avoid out-of-range errors [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Starting index at 1 instead of 0
  • Misunderstanding array length vs last index
5. You have an array string[] fruits = {"apple", "banana", "cherry"};. You want to create a new array with all fruit names in uppercase using a for loop. Which code correctly does this?
hard
A. string[] upperFruits = new string[fruits.Length]; for (int i = 1; i <= fruits.Length; i++) { upperFruits[i] = fruits[i].ToUpper(); }
B. string[] upperFruits = new string[fruits.Length]; foreach (string f in fruits) { upperFruits[i] = f.ToUpper(); }
C. string[] upperFruits = new string[fruits.Length]; for (int i = 0; i < fruits.Length; i++) { upperFruits[i] = fruits[i].ToUpper(); }
D. string[] upperFruits = new string[fruits.Length]; for (int i = 0; i < fruits.Length; i++) { upperFruits[i] = fruits.ToUpper(); }

Solution

  1. Step 1: Initialize new array with same length

    We create upperFruits with the same size as fruits.
  2. Step 2: Use for loop with correct index and method

    Loop from 0 to Length-1, assign fruits[i].ToUpper() to upperFruits[i].
  3. Final Answer:

    string[] upperFruits = new string[fruits.Length]; for (int i = 0; i < fruits.Length; i++) { upperFruits[i] = fruits[i].ToUpper(); } -> Option C
  4. Quick Check:

    Use for loop with index and ToUpper() per element [OK]
Hint: Use for loop with index to assign transformed elements [OK]
Common Mistakes:
  • Using foreach without index to assign array elements
  • Starting loop at 1 or using <= causing errors
  • Calling ToUpper() on array instead of string element
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