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

Why collections over arrays in C Sharp (C#)

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

Collections are more flexible than arrays. They can grow or shrink in size easily, while arrays have a fixed size.

When you don't know how many items you will need to store in advance.
When you want to add or remove items frequently.
When you want to use built-in methods to search, sort, or manipulate data easily.
When you want safer code that checks for errors like going out of bounds.
When you want to store different types of objects in one place using generic collections.
Syntax
C Sharp (C#)
using System.Collections.Generic;

// Example of a collection: List<T>
List<int> numbers = new List<int>();
numbers.Add(10);
numbers.Remove(10);

// Example of an array
int[] fixedNumbers = new int[5];
fixedNumbers[0] = 10;

Collections like List can change size dynamically.

Arrays have a fixed size set when created.

Examples
Adding items to a collection and checking its size.
C Sharp (C#)
List<string> fruits = new List<string>();
fruits.Add("Apple");
fruits.Add("Banana");
Console.WriteLine(fruits.Count);  // Output: 2
Trying to add beyond array size causes an error.
C Sharp (C#)
int[] numbers = new int[3];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
// numbers[3] = 4; // This will cause an error because array size is fixed
An empty collection starts with zero items.
C Sharp (C#)
List<int> emptyList = new List<int>();
Console.WriteLine(emptyList.Count);  // Output: 0
An array with one element.
C Sharp (C#)
int[] singleElementArray = new int[1] { 42 };
Console.WriteLine(singleElementArray[0]);  // Output: 42
Sample Program

This program shows how arrays have a fixed size and cannot add new items, while collections like List can add and remove items easily.

C Sharp (C#)
using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // Create an array with fixed size
        int[] fixedArray = new int[3] { 1, 2, 3 };
        Console.WriteLine("Array contents before:");
        foreach (int number in fixedArray)
        {
            Console.Write(number + " ");
        }
        Console.WriteLine();

        // Create a collection (List) that can grow
        List<int> dynamicList = new List<int> { 1, 2, 3 };
        Console.WriteLine("List contents before adding:");
        foreach (int number in dynamicList)
        {
            Console.Write(number + " ");
        }
        Console.WriteLine();

        // Try to add an item to the array (not possible)
        // fixedArray[3] = 4; // This would cause an error

        // Add an item to the list
        dynamicList.Add(4);
        Console.WriteLine("List contents after adding 4:");
        foreach (int number in dynamicList)
        {
            Console.Write(number + " ");
        }
        Console.WriteLine();

        // Remove an item from the list
        dynamicList.Remove(2);
        Console.WriteLine("List contents after removing 2:");
        foreach (int number in dynamicList)
        {
            Console.Write(number + " ");
        }
        Console.WriteLine();
    }
}
OutputSuccess
Important Notes

Adding or removing items in a List is usually fast but can take more time if the internal array needs to resize.

Arrays use less memory and are faster for fixed-size data.

Common mistake: Trying to add items to an array after creation causes errors.

Use arrays when size is fixed and performance is critical; use collections when you need flexibility.

Summary

Collections can grow and shrink; arrays cannot.

Collections provide useful methods to manage data easily.

Choose collections for flexible data and arrays for fixed-size data.

Practice

(1/5)
1. Why might you choose a collection like List<T> over an array in C#?
easy
A. Because collections can change size dynamically while arrays have fixed size.
B. Because arrays have more built-in methods than collections.
C. Because collections use less memory than arrays.
D. Because arrays can store different data types in the same array.

Solution

  1. Step 1: Understand array size behavior

    Arrays in C# have a fixed size once created and cannot grow or shrink.
  2. Step 2: Understand collection size behavior

    Collections like List<T> can dynamically add or remove items, changing their size.
  3. Final Answer:

    Because collections can change size dynamically while arrays have fixed size. -> Option A
  4. Quick Check:

    Collections grow/shrink; arrays fixed size [OK]
Hint: Remember: arrays fixed size, collections flexible size [OK]
Common Mistakes:
  • Thinking arrays can resize automatically
  • Believing collections use less memory always
  • Confusing data type storage capabilities
2. Which of the following is the correct way to declare a collection that can grow in size in C#?
easy
A. int[] numbers = new int[5];
B. List<int> numbers = new List<int>();
C. int numbers = new List<int>();
D. ArrayList numbers = new int[5];

Solution

  1. Step 1: Check syntax for array declaration

    int[] numbers = new int[5]; declares a fixed-size array, not a collection.
  2. Step 2: Check syntax for collection declaration

    List<int> numbers = new List<int>(); correctly declares a generic list collection that can grow.
  3. Final Answer:

    List<int> numbers = new List<int>(); -> Option B
  4. Quick Check:

    List<T> syntax is for growable collections [OK]
Hint: Use List<T> for growable collections, arrays need size upfront [OK]
Common Mistakes:
  • Using array syntax when collection is needed
  • Assigning wrong types to variables
  • Confusing ArrayList with arrays
3. What will be the output of this C# code?
List<int> nums = new List<int>() {1, 2, 3};
nums.Add(4);
Console.WriteLine(nums.Count);
medium
A. Compilation error
B. 3
C. 0
D. 4

Solution

  1. Step 1: Understand initial list size

    The list nums starts with 3 elements: 1, 2, 3.
  2. Step 2: Analyze the Add method effect

    Calling nums.Add(4); adds one more element, increasing count to 4.
  3. Final Answer:

    4 -> Option D
  4. Quick Check:

    List.Count reflects added elements [OK]
Hint: Add increases collection size; Count shows current size [OK]
Common Mistakes:
  • Assuming Count stays 3 after Add
  • Confusing Count with capacity
  • Expecting compilation error due to Add
4. Identify the error in this code snippet:
int[] arr = new int[3];
arr.Add(5);
medium
A. Array size must be declared as 5.
B. int[] cannot store integers.
C. Arrays do not have an Add method.
D. The array must be initialized with values.

Solution

  1. Step 1: Check array methods

    Arrays in C# do not have an Add method; this method belongs to collections like List.
  2. Step 2: Understand array limitations

    Arrays have fixed size and cannot add elements dynamically.
  3. Final Answer:

    Arrays do not have an Add method. -> Option C
  4. Quick Check:

    Arrays lack Add method [OK]
Hint: Arrays fixed size, no Add method; use List for adding [OK]
Common Mistakes:
  • Trying to add elements to arrays
  • Confusing array size with element count
  • Assuming arrays have collection methods
5. You need to store a list of user names that can change during program execution. Which approach is best and why?
hard
A. Use a List<string> because it can grow and shrink as users are added or removed.
B. Use an array because it is faster and fixed size is enough.
C. Use a fixed-size array and recreate it every time the list changes.
D. Use a string variable to store all names separated by commas.

Solution

  1. Step 1: Analyze data size flexibility needs

    User names list changes size, so fixed size arrays are inconvenient.
  2. Step 2: Choose collection type for dynamic data

    List<string> allows adding/removing names easily without recreating the structure.
  3. Final Answer:

    Use a List<string> because it can grow and shrink as users are added or removed. -> Option A
  4. Quick Check:

    Dynamic data needs collections like List [OK]
Hint: Dynamic data? Use List<T> for easy resizing [OK]
Common Mistakes:
  • Choosing fixed arrays for changing data
  • Using strings to store multiple values unsafely
  • Recreating arrays repeatedly instead of collections