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];
}
Данная диагностика классифицируется как: