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: