IndexOutOfRangeException. This C# exception will typically occur when a statement tries to access an element at an index greater than the maximum allowable index.
This error happens in C# programs that use array types. A negative index will also cause this exception. If-statements should be added to protect against invalid accesses.
Exception example. When you create an array of many elements, you can access those elements through the indices of zero through the maximum length minus one.
Note This means that for an array of 100 elements, you can access array[0] through array[99].
Important The top index equals the total length minus one. If you access an index past 99, you get an IndexOutOfRangeException.
Detail You can load and store values into these elements, which are considered variables and not values.
class Program
{
static void Main()
{
// Allocate an array of one-hundred integers.// ... Then assign to positions in the array.// ... Assigning past the last element will throw.
int[] array = new int[100];
array[0] = 1;
array[10] = 2;
array[200] = 3;
}
}Unhandled Exception: System.IndexOutOfRangeException:
Index was outside the bounds of the array.
at Program.Main() in ...Program.cs:line 8
To avoid the exception, you can insert bounds checks, as with an if-statement. An alternative is to simply make the array length much larger when you allocate it.
Negative array indices. You will encounter the IndexOutOfRangeException if you try to assign to an index in an array that is negative. In C# arrays are indexed beginning at zero.
Note The first element is always available at index zero. There are ways to simulate non-zero based arrays.
Summary. Here we saw the IndexOutOfRangeException. We explained the relation between array lengths and array indices. You can always access the array indexes up to the array length minus one.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Aug 17, 2021 (image).