﻿# 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'\.

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

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

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

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

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