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.

Анализатор обнаружил доступ к элементу коллекции с помощью оператора '^' со значением, которое меньше или равно 0. Это приводит к исключению типа 'IndexOutOfRangeException'.

Рассмотрим пример:

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

Оператор '^' указывает, что индекс учитывается с конца последовательности. Может быть не очевидно, что '^0' равносильно 'array.Length'. При попытке получения последнего элемента коллекции с помощью '^0' будет выброшено исключение, как и при использовании 'array[array.Length]'.

Исправленный код:

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

Данная диагностика классифицируется как: