Плохой дизайн: доступ к элементам коллекции - PullRequest
0 голосов
/ 23 мая 2018

Время от времени я получаю доступ к определенному элементу в списке и мне нужен предыдущий и следующий элемент.

Однако, если элемент, к которому я хочу получить доступ, является последним в коллекции, я получаю исключение.То же самое с другой стороной.

Чтобы решить эту проблему, я создаю этот уродливый оператор if - else if - else.

        if ( i == this.Count() - 1 )
        {
             currToNext = new Vertice(this[i], this[0]);
             currToPrevious = new Vertice(this[i], this[i-1]);
        }
        else if ( i == 0 )
        {
             currToNext = new Vertice(this[i], this[i+1]);
             currToPrevious = new Vertice(this[i], this[this.Count() -1]);
        }
        else 
        {
             currToNext = new Vertice(this[i], this[i+1]);
             currToPrevious = new Vertice(this[i], this[i-1]);
        }

Есть ли лучший способ решить эту проблему?

1 Ответ

0 голосов
/ 23 мая 2018

Да, это так.Используйте для следующего

this[(i+1)%this.Count()]

И для предыдущего (кредиты @Dmitry Bychenko)

this[(i -1 + this.Count)%this.Count()]

Таким образом, если в вашем списке есть элементы от 0 до 9, и вы запрашиваете элемент 9вы делаете 10% 10 = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...