Creating an Index From the End of a Collection at a Specified Index Position in C#


Indexing is a crucial part of any programming language, and C# is no exception. In C# 8.0, a new feature was introduced to create an index from the end of a collection at a specified position. This feature adds a new dimension to array and list manipulation in C#. This article will guide you through the process of creating an index from the end of a collection at a specified index position in C#.

Understanding Indexing in C#

Before proceeding, let's understand what indexing means in C#. In C#, you can access elements in an array or a collection using an index. Traditionally, indexing starts from the beginning of the collection, with the first element at index 0. However, C# 8.0 introduced a new way to index collections — from the end.

The Index Struct in C#

C# 8.0 introduced the Index struct, which can represent either a "from start" or a "from end" index. You create a "from start" index just as you would expect, by providing a non-negative integer value. However, to create a "from end" index, you need to use the caret (^) operator.

Example

Here's an example −

using System;

class Program {
   static void Main() {
      int[] numbers = { 1, 2, 3, 4, 5 };

      Index i1 = new Index(2);         // "from start" index
      Index i2 = new Index(2, fromEnd: true);        // "from end" index

      int index1 = i1.GetOffset(numbers.Length);
      int index2 = i2.GetOffset(numbers.Length);

      Console.WriteLine(numbers[index1]);  // Outputs: 3
      Console.WriteLine(numbers[index2]);  // Outputs: 4
   }
}

In this example, i1 is a "from start" index and i2 is a "from end" index. When we print the elements at these indices, we get 3 and 4, respectively.

Output

3
4

Using the Index Struct with Collections

You can use the Index struct with any type that supports indexing, including arrays, strings, and various collection classes −

Example

using System;
using System.Collections.Generic;

class Program {
   static void Main() {
      List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
      
      int i = numbers.Count - 2;

      Console.WriteLine(numbers[i]);  // Outputs: 4
   }
}

In this example, we create a "from end" index i, and then we use it to access an element in the list numbers.

Output

4

Conclusion

Creating an index from the end of a collection at a specified index position is a powerful feature introduced in C# 8.0. This feature enhances the flexibility of indexing in C# and simplifies the code needed for certain operations, such as accessing elements near the end of a collection.

Updated on: 24-Jul-2023

122 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements