Как я могу получить доступ к индексатору по ссылке - PullRequest
0 голосов
/ 19 марта 2020

Я создал один класс с индексатором.

public class IntArray
{
        protected int[] _thisArray = new int[20];

        // --------------- ARRAY --------------- //
        public int this[int index] { get => _thisArray[index]; }
}

Теперь я хочу получить доступ к индексатору по ссылке. Вот что я попробовал:

private void AccessWithReference()
{
        var intArray = new IntArray();
        SetByReference(ref intArray[0]);
}

private void SetByReference(ref int value) { value = 0; }

Но я получаю ошибку. С другой стороны, если я пытаюсь получить прямой доступ к массиву ref _thisArray[0], все в порядке. Как я могу получить доступ к индексатору через ref?

1 Ответ

1 голос
/ 19 марта 2020

Microsoft docs говорит: «Значение индексатора не классифицируется как переменная, поэтому вы не можете передать значение индексатора как параметр ref или out.»
Вы можете использовать временную переменную для сделайте так, как это:

private void AccessWithReference()
{
   IntArray intArray = new IntArray();
   int a = intArray[0];
   SetByReference(ref a);
}

Индексатор - это ссылка тип уже

...