В C# отрицательное индексирование означает доступ к элементам массива или коллекции с использованием отрицательных чисел в качестве индексов. Используя отрицательную индексацию, вы можете получить доступ к элементам с конца массива или коллекции, начиная с -1 в качестве последнего элемента.
Вот несколько методов, которые можно использовать для отрицательной индексации в C#:
-
Регулировка длины массива.
Один из способов включить отрицательную индексацию — это соответствующим образом отрегулировать длину массива и получить доступ к элементам. Например, если у вас есть массив длинойn
, вы можете получить доступ к последнему элементу, используяarray[n - 1]
, предпоследний элемент, используяarray[n - 2]
и т. д. -
Пользовательский индексатор.
Другой подход — создать в классе собственный индексатор, который внутренне обрабатывает отрицательную логику индексации. Внедрив собственный индексатор, вы можете определить поведение доступа к элементам с использованием отрицательных индексов.
Вот пример пользовательского индексатора, поддерживающего отрицательное индексирование:
public class CustomArray
{
private int[] array;
public CustomArray(int[] values)
{
array = values;
}
public int this[int index]
{
get
{
if (index >= 0)
return array[index];
else
return array[array.Length + index];
}
set
{
if (index >= 0)
array[index] = value;
else
array[array.Length + index] = value;
}
}
}
Используя этот класс пользовательского массива, вы можете получать доступ к элементам, используя отрицательные индексы, например:
CustomArray myArray = new CustomArray(new int[] { 1, 2, 3, 4, 5 });
int lastElement = myArray[-1]; // Accessing the last element
int secondToLastElement = myArray[-2]; // Accessing the second-to-last element
Обратите внимание, что отрицательная индексация не является встроенной функцией массивов или коллекций C#. Для этого требуется реализация специальной логики, как показано в примере выше.