# V3199. The index from end operator is used with the value that is less than or equal to zero. Collection index will be out of bounds.

The analyzer has detected that a collection element is being accessed using the '^' operator with a value less than or equal to 0. This results in an exception of the 'IndexOutOfRangeException' type.

Let's look at the following example:

    T GetLastItem<T>(T[] array)
    {
        return array[^0];
    }

The '^' operator indicates that the index is counted from the end of the sequence. It may not be obvious that '^0' is equal to 'array.Length'. Attempting to get the last collection element via '^0' results in the exception, just like when using 'array[array.Length]'.

Here's the fixed code:

    T GetLastItem<T>(T[] array)
    {
        return array[^1];
    }

This diagnostic is classified as:

CWE-125 CWE-787