Arrays And Lists In C# Complete Guide

 Last Update:2025-06-23T00:00:00     .NET School AI Teacher - SELECT ANY TEXT TO EXPLANATION.    9 mins read      Difficulty-Level: beginner

Understanding the Core Concepts of Arrays and Lists in C#

Arrays and Lists in C# Explained in Detail

Arrays in C#

Definition and Characteristics: Arrays are fixed-size data structures, meaning their size must be defined at the time of declaration and cannot be changed during runtime. Arrays are useful when you know in advance the number of elements you’ll be working with.

Syntax for Declaration:

dataType[] arrayName = new dataType[arraySize];

// Example:
int[] numbers = new int[5]; // Creates an array that can hold 5 integers.

Initialization: Arrays can be initialized at the time of declaration with specific values.

int[] numbers = new int[] { 1, 2, 3, 4, 5 };
int[] numbers = { 1, 2, 3, 4, 5 }; // Implicitly creates new array

Accessing Elements: Array elements are accessed using an index, starting from 0 for the first element.

Console.WriteLine(numbers[0]); // Outputs 1

Multi-dimensional Arrays: C# supports multi-dimensional arrays:

int[,] matrix = new int[2, 3]; // 2 rows, 3 columns
matrix[0, 0] = 1; // First row, first column

Important Array Methods:

  • Array.Copy: Copies a range of elements.
  • Array.Sort: Sorts elements.
  • Array.Reverse: Reverses the order of array elements.
  • Array.IndexOf: Returns the index of a specified value.

Advantages:

  • Simple and efficient for fixed-size collections.
  • Fast access time due to contiguous memory allocation.

Lists in C#

Definition and Characteristics: Lists are part of the .NET System.Collections.Generic namespace and are dynamic data structures that can grow and shrink during runtime. They offer richer functionality compared to arrays.

Creating a List:

using System.Collections.Generic;

List<dataType> listName = new List<dataType>();

// Example:
List<int> numbers = new List<int>();

Initialization with Values:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

Adding and Removing Elements:

numbers.Add(6); // Adds 6 to the end
numbers.Insert(0, 0); // Inserts 0 at index 0

numbers.Remove(5); // Removes first occurrence of 5
numbers.RemoveAt(0); // Removes element at index 0

Accessing Elements: Similar to arrays, lists use 0-based indexing.

Console.WriteLine(numbers[0]); // Outputs 0

Important List Methods:

  • Add: Adds an item to the end of the list.
  • Remove: Removes the specified object.
  • Clear: Removes all elements.
  • Contains: Checks if the list contains a specific value.
  • Sort: Sorts the list elements.
  • ForEach: Performs an action on each element.

Advantages:

  • Dynamic size: Can grow and shrink.
  • Provides powerful methods for handling collections.
  • Works seamlessly with LINQ queries.

Use Cases Comparison

Arrays:

  • Ideal for scenarios where the size of the collection is predetermined and doesn’t change.
  • Optimal for performance-critical applications due to fixed size.
  • Useful when dealing with multi-dimensional data structures.

Lists:

  • Suitable for collections that require frequent additions or deletions.
  • Preferred for applications where ease of use and additional functionality are critical.
  • Great for scenarios involving complex operations on collections.

Conclusion

Online Code run

🔔 Note: Select your programming language to check or run code at

💻 Run Code Compiler

Step-by-Step Guide: How to Implement Arrays and Lists in C#

Arrays in C#

Example 1: Declaring, Initializing, and Accessing an Array

  1. Declare an Array: Define the type of elements and the size of the array.
  2. Initialize an Array: Assign values to each element.
  3. Access Elements: Retrieve values using their index.
  4. Modify Elements: Change values at specific indices.
using System;

class Program
{
    static void Main()
    {
        // Step 1: Declare an array of integers with a size of 5
        int[] numbers;
        numbers = new int[5];

        // Step 2: Initialize the array elements
        numbers[0] = 10;
        numbers[1] = 20;
        numbers[2] = 30;
        numbers[3] = 40;
        numbers[4] = 50;

        // You can also initialize an array at the time of declaration as follows:
        // int[] numbers = { 10, 20, 30, 40, 50 };

        // Step 3: Access elements and print them
        Console.WriteLine("Array elements:");
        for (int i = 0; i < numbers.Length; i++)
        {
            Console.WriteLine("Element at index " + i + ": " + numbers[i]);
        }

        // Step 4: Modify elements
        numbers[2] = 100;
        Console.WriteLine("Modified array element at index 2: " + numbers[2]);
    }
}

Explanation:

  • Declaration: int[] numbers; declares an uninitialized array of integers named numbers.
  • Initialization: numbers = new int[5]; initializes the array with a size of 5.
  • Accessing Elements: numbers[i] accesses the element at index i. The Length property returns the number of elements in the array.
  • Modifying Elements: numbers[2] = 100; changes the value at index 2 from 30 to 100.

Lists in C#

Example 1: Declaring, Initializing, Adding, and Accessing Elements in a List

  1. Include the Namespace: Import System.Collections.Generic to use the List<T> class.
  2. Declare and Initialize a List: Define the type of elements in the list.
  3. Add Elements: Use methods like Add() to insert items into the list.
  4. Insert Elements: Insert an item at a specified index with Insert().
  5. Remove Elements: Delete an element by its value with Remove(), or by index with RemoveAt().
  6. Access Elements: Use indexing similar to arrays.
  7. Iterate through a List: Use loops to access all elements.
using System;
using System.Collections.Generic; // Step 1: Include this namespace

class Program
{
    static void Main()
    {
        // Step 2: Declare and initialize a list of strings
        List<string> fruits = new List<string>();

        // Step 3: Add elements to the list
        fruits.Add("Apple");
        fruits.Add("Banana");
        fruits.Add("Cherry");

        // Step 4: Insert an element at index 1
        fruits.Insert(1, "Blueberry");

        // Print the list
        Console.WriteLine("List elements after insertion:");
        foreach (string fruit in fruits)
        {
            Console.WriteLine(fruit);
        }

        // Step 5: Remove an element by its value
        fruits.Remove("Banana");

        // Print the list
        Console.WriteLine("List elements after removal:");
        foreach (string fruit in fruits)
        {
            Console.WriteLine(fruit);
        }

        // Step 5: Remove an element by its index
        fruits.RemoveAt(0);

        // Print the list
        Console.WriteLine("List elements after removing first element:");
        foreach (string fruit in fruits)
        {
            Console.WriteLine(fruit);
        }

        // Step 6: Access elements
        string secondFruit = fruits[1];
        Console.WriteLine("Second fruit in the list: " + secondFruit);

        // Step 7: Iterate through the list
        Console.WriteLine("All elements in the list:");
        for (int i = 0; i < fruits.Count; i++)
        {
            Console.WriteLine("Element at index " + i + ": " + fruits[i]);
        }
    }
}

Explanation:

  • Namespace: We include System.Collections.Generic to use the List<T> class.
  • Declaration and Initialization: List<string> fruits = new List<string>(); creates an empty list that will hold strings.
  • Add Elements: fruits.Add("Apple"); adds "Apple" to the end of the list.
  • Insert Elements: fruits.Insert(1, "Blueberry"); inserts "Blueberry" at index 1.
  • Remove Elements: fruits.Remove("Banana"); and fruits.RemoveAt(0); remove elements from the list by value and by index respectively.
  • Accessing Elements: fruits[1] accesses the element at index 1.
  • Iterating through a List: foreach loop and for loop iterate through all elements in the list.

Additional Features

Example 2: Multi-dimensional Arrays and Jagged Arrays (Advanced)

Multi-dimensional Arrays: Arrays with more than one dimension are known as multi-dimensional arrays.

using System;

class Program
{
    static void Main()
    {
        // Declare and initialize a 2D array
        int[,] matrix = new int[2, 3]
        {
            { 1, 2, 3 },
            { 4, 5, 6 }
        };

        // Print elements of the 2D array
        Console.WriteLine("2D Array elements:");
        for (int i = 0; i < matrix.GetLength(0); i++) 
        {
            for (int j = 0; j < matrix.GetLength(1); j++)
            {
                Console.Write(matrix[i, j] + " ");
            }
            Console.WriteLine();
        }
    }
}

Jagged Arrays: An array of arrays, where each inner array can be of different lengths.

using System;

class Program
{
    static void Main()
    {
        // Declare and initialize a jagged array
        int[][] jaggedArray = new int[3][];
        jaggedArray[0] = new int[] { 1, 2, 3 };
        jaggedArray[1] = new int[] { 4, 5 };
        jaggedArray[2] = new int[] { 6, 7, 8, 9 };

        // Print elements of the jagged array
        Console.WriteLine("Jagged Array elements:");
        for (int i = 0; i < jaggedArray.Length; i++)
        {
            for (int j = 0; j < jaggedArray[i].Length; j++)
            {
                Console.Write(jaggedArray[i][j] + " ");
            }
            Console.WriteLine();
        }
    }
}

Explanation:

  • Multi-dimensional Arrays: We use commas to separate dimensions, e.g., int[,] matrix.
  • Jagged Arrays: Each element of the outer array is another array, which can have a different length.
  • GetLength(): matrix.GetLength(0) returns the number of rows, while matrix.GetLength(1) returns the number of columns.

Conclusion

You May Like This Related .NET Topic

Login to post a comment.